嵌入式學習筆記 彙編常用符號與偽指令

2021-10-17 06:47:40 字數 1115 閱讀 3787

" @ "彙編指令中的注釋符號

" # " 表示後面附帶的是立即數

" : "以冒號結尾的指令是標號,標記指令的被分配的位址,類似與c中定義的變數,通過變數代替位址

" . "表示當前指令位址 例如,彙編中死迴圈的實現 b .

偽指令前面通常都帶乙個點,以顯示出於指令的不同

.globe _start給start外部鏈結屬性

.section .text 指定當前**段

.ascii/.byte/.short/.long/.word

.quad/.float/ 在儲存器中分配對應型別大小的位元組,初始化制定的變數

.align 對齊平方後方為對齊位數

如.align 4 16位元組對齊

.balignl 對齊並填充,填充的為後面的數

如.blaignl 16 0xff 16位元組對齊 b表示按位填充,l表示按4位元組填充

.equ 模擬於c語言巨集定義,起相等替換作用

.end 標識檔案結束

.include 同include

.code32/.arm arm指令

.code16/.thumb thumb指令

ldr 大範圍的位址載入指令

ldr既有指令也有偽指令,區別在於使用ldr指令有一些需要注意的點,如合法立即數非法立即數,而使用偽指令則不存在這種問題,因為編譯器會將你輸入立即數的轉換成為合法的方式載入到暫存器

//偽指令與指令載入立即數的方式

ldr r0,#0x1ff

ldr r0, =0x1f @涉及到 合法/非法立即數和記憶體池

adr 小範圍的位址載入指令

adrl 中等範圍的位址載入指令

ldr是基於絕對位址,是真實的位址,adr是基於相對位址,即基於pc指標的位址通過偏移得到![在這裡插入描述](

nop 空指令

補充:合法立即數與非法立即數,由於一條指令只有32位,而指令又要存放其他資料,所以不能所有為位數都用來存放立即數,arm規定只能附帶8位立即數,但這個立即數是可以通過左移或右移得到的,即0xff000000也屬於合法立即數

偽指令和編譯器有關,博主學習的是gnu工具鏈,所以學習的是gnu工具鏈下的偽指令

嵌入式學習筆記 彙編基礎

彙編的指令與偽指令 指令是cpu機器指令的助記符,通過編譯會得到機器碼 偽指令是編譯器為輔助引導編譯過程而加入的指令,沒有實際作用 兩種風格的arm指令 官方推薦的大寫風格 同時也是windows平台用的風格 gcc風格則是小寫風格 arm通過暫存器名尋找通用暫存器 arm彙編特點 讀 改 寫 ld...

嵌入式學習筆記 彙編基礎02

資料處理指令 資料傳輸指令mov mvn mov資料傳遞指令 mov既可暫存器與暫存器之間進行資料傳遞,也可將立即數賦值給暫存器 mvn資料按位取反後傳遞 算數指令 add sub rsb adc rsc 反向帶進製減法 關鍵單詞 carry 進製 subtraction add sub r2 r0...

嵌入式學習Makefile 偽目標

偽目標makefile的乙個重要的特殊目標。偽目標 它不代表乙個真正的檔名,在執行make時可以指定這個目標來執行其所在規則定義的命令,也可以將乙個偽目標稱為標籤。使用偽目標有兩點原因 1 避免在我們的makefile中定義的只執行命令的目標 就是說定義該目標的目的是為了執行一系列的命令,比如cle...