ARM彙編學習 1

2021-09-07 03:18:16 字數 747 閱讀 4469

.global關鍵字用來讓乙個符號對鏈結器可見,可以供其他鏈結物件模組使用;告訴編譯器後續跟的是乙個全域性可見的名字【可能是變數,也可以是函式名】

.global _start 讓 _start 符號成為可見的識別符號,這樣鏈結器就知道跳轉到程式中的什麼地方並開始執行。

_start是乙個函式的起始位址,也是編譯、鏈結後程式的起始位址。由於程式是通重載入器來載入的,必須要找到 _start名字的函式,因此_start必須定義成全域性的,以便存在於編譯後的全域性符合表中,供其它程式【如載入器】尋找到。

linux尋找這個 _start 標籤作為程式的預設進入點。

ldr r1, =0x56000050/偽指令 將暫存器位址0x56000050存入r0中/

str r0, [r1]/將r0暫存器中的值寫入到r1暫存器中的位址中/

loop:/識別符號/

b loop/死迴圈 跳轉到識別符號/

b. /死迴圈 此處的『.』表示此當前位址/

mov:暫存器,資料 將資料放進暫存器

add:暫存器,資料

add:a,b —>a=a+b

sub: 暫存器,資料

sub:a,b —>a=a-b

arm 彙編學習

一 暫存器和定址 arm有16個暫存器,r0 r15 pc r15 lr r14 sp r13 ip r12 push sp減少,pop sp增加 1.定址方式 從操作位址尋找運算元的方式 2.arm的定址方式 a 暫存器定址,運算元在暫存器中 b 立即定址,運算元就在指令中 subs r0,r0,...

ARM彙編學習

前言 任何彙編行都是如下結構 comment 注釋 gnu arm 彙編中,任何以冒號結尾的都被認為是乙個標籤,而不一定非要在一行的開始。下面是乙個簡單的例子,這段匯程式設計序定義了乙個 add 的函式,該函式返回兩個引數的和 section text,x global add give the s...

ARM彙編學習

前言 任何彙編行都是如下結構 comment 注釋 gnu arm 彙編中,任何以冒號結尾的都被認為是乙個標籤,而不一定非要在一行的開始。下面是乙個簡單的例子,這段匯程式設計序定義了乙個 add 的函式,該函式返回兩個引數的和 section text,x global add give the s...