PowerPC 彙編指令小結

2021-09-20 18:57:47 字數 1482 閱讀 9127

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個...