armv4t只有49條指令,加上4條偽指令,總共53條,詳細說明可見參考資料[1]p55-99,這裡重點說明書本中沒有說明,但是在程式設計過程中又使用到的一些關鍵字。這些關鍵字是由編譯器定義的,與arm其實沒有多大的關係。
1 label
例項:
_start: b start_code
2 .globl
根據參考資料[6]的說明,gnu彙編中使用.globl來宣告乙個全域性變數,參考資料[4]則說明但是用.globl宣告乙個變數之後,聯結器將會引用它。
例項:
.globl _start
_start: b start_code
ldr pc, _undefined_instruction
根據參考資料[5]的說明,上述_start是乙個全域性可見的名字,在其它源文件中可以跳轉到該_start以執行該位址處的命令。如果沒有.globl宣告,則只有與_start在同乙個原始檔的**可以跳轉到_start標號位址處。因此,有了.globl,_start就相當於c語言的main()函式,否則只能是區域性函式。
3 .word
根據參考資料[6]的說明,.word用於申請乙個字大小的儲存空間。
例項:
.globl _text_base
_text_base:
.word config_sys_text_base
_text_base位址處申請乙個字大小的儲存空間,並且將其初始化為config_sys_text_base變數的值。
參考資料
[1]張勇. arm原理與c程式設計,西安電子科技大學出版社,2009
[2]arm彙編指令彙總
[3]彙編中.word的具體用途是什麼?
[4].globl _start 含義
[5].text .global 這是什麼意思?arm linux 彙編
[6]arm 彙編--符號和標號
ARM9學習筆記之 彙編
arm系列晶元與pc系列 可能我說法不太準確 晶元在指令設計上就有本質的區別。arm中每條指令是精簡指令集要麼是32位,要麼是16位。而pc的指令是複雜指令集,一條指令可以由多個位元組組成。1.關於函式呼叫方法 在arm彙編中,函式呼叫非常靈活。1 bl指令 bl initmem 呼叫 initme...
ARM9彙編找最值
area test1,code,readonly entry code32 從隨機的十個數中找出最小的,並存放在目標記憶體單元中 start ldr r0,src r0,r1 用於記錄資料記憶體位址 ldr r1,dst ldr r2,r0 mov r3,9 迴圈次數 loop add r0,r0,...
ARM字對齊及關鍵字
一 為什麼要字對齊?現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問都可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特定的記憶體位址訪問,這就是對齊。位元組對齊的原因大致是如下兩條 1 平台原因 移植原因 不是所有的硬體平台都能訪問任意位址上的任意資...