1. 暫存器模型
2. 記憶體訪問
li r7, 123
stw r7, 0(r1) ; store register r7 to the stack
lwz r3, 0(r1) ; load register r3 from the stack
blr
stw r7, 0(r1) ;儲存r7到stack中, 如果用stwu在同時更新棧頂指標-->addi r1, ri, -4
lwz r3, 0(r1); 將stack 頂的資料載入到r3
blr ; 轉到連線暫存器儲存的位址(函式返回位址)
3. 函式呼叫
利用b (branch),如b _print_int;bl (branch and link)
mflr r0 ; 將返回到main函式的位址儲存在r0暫存器中
stwu r0,-4(r1); 將返回位址(r0)儲存到堆疊中,同時更新棧頂指標,addi r1, r1,4
li r3,99
bl _print_int ; "bl" will overwrite lr, so print_int can return here
lwz r0,0(r1); grab main's link register from the stack
addi r1,r1,4 ; restore the stack
mtlr r0 ; restore main's link register
blr ; finally, this works correctly!
例如:
mflr r0
stw r0, 20(sp) /* 將呼叫函式的返回位址儲存在呼叫堆疊空間中 sp+20 */
/* set address of pseudo-system call trap */
lis p5, verinvokesclocation@ha
addi p5, p5, verinvokesclocation@l
verinvokesclocation:
trap /* pseudo system call */
li p5, 0 /* clear address */
lwz r0, 20(sp)
mtlr r0 /*將儲存著呼叫函式返回位址儲存到lr暫存器中,同時恢復棧頂指標*/
POWERPC 彙編指令tips
1 配合條件跳轉指令使用的算術指令必須加上 字尾 用以表示更新條件暫存器 cr,主要有 add 暫存器內容相加 addi 暫存器內容跟立即數相加 addis 立即數左移 16位後跟暫存器內容相加 和 subi 暫存器內容減去立即數 subis 暫存器內容減去左移 16位後的立即數 subf 從rb ...
彙編指令小結
彙編指令小結 more 本文主要是記錄一些遇到的arm彙編知識。彙編 以韋東山老師的 第7章nand flash實驗配套 13th link 4096 中的start.s為例 globl start start 硬體相關的設定 把外設的基位址告訴cpu peri port setup ldr r0,...
PowerPC彙編指令集簡析 1
在了解powerpc彙編指令前,需要先看下程式設計所用的暫存器模型,powerpc系統結構為大多數運算指令都定義了register register的操作,這些操作的源運算元從暫存器取得,或作為嵌入指令操作碼中的立即數提供。這裡的e300核可分為使用者程式設計模型和管理員程式設計模型,該模型有32個...