匯編語(yǔ)言
匯編語(yǔ)言Assembly language是一種低級(jí)語(yǔ)言,與機(jī)器語(yǔ)言(不同的ISA)對(duì)應(yīng)。
- 缺點(diǎn):難讀難寫(xiě)難移植
- 優(yōu)點(diǎn):靈活強(qiáng)大
- 應(yīng)用場(chǎng)景:需要直接訪問(wèn)底層硬件的地方(編寫(xiě)操作系統(tǒng)、引導(dǎo)程序)、需要對(duì)性能進(jìn)行極致優(yōu)化的地方(繞開(kāi)編譯器去優(yōu)化指令)
匯編語(yǔ)言語(yǔ)法介紹(GNU版本)
- 匯編程序文件后綴是.s(純匯編指令)或.S(包含預(yù)處理語(yǔ)句 include /define等)。
- 一個(gè)完整的RISC-V匯編程序由多條語(yǔ)句(statement)組成。
匯編語(yǔ)句
一條典型的RISC-V匯編語(yǔ)句包含三部分([]表示可選):
[label:] [operation] [comment]
- label標(biāo)號(hào):必須以冒號(hào)結(jié)尾,相當(dāng)于id/地址,引用時(shí)可以用
- operation可以有以下多種類型:
- instruction(指令):原生指令,直接對(duì)應(yīng)二進(jìn)制機(jī)器指令的字符串
- pseudo-instruction(偽指令):為了提高編寫(xiě)代碼的效率,可以用一條偽指令指示匯編器產(chǎn)生多條實(shí)際的指令。
- directive(指示/偽操作):通過(guò)類似指令的形式(以.開(kāi)頭),通知匯編器如何控制代碼的產(chǎn)生等,不對(duì)應(yīng)具體的指令
- macro:采用.macro / .endm自定義的宏(指示/偽操作),達(dá)到替換效果
- comment(注釋)常用#開(kāi)始到當(dāng)前行結(jié)束(也能用; //)