Linux下彙編語法和內嵌彙編

2021-07-02 22:04:11 字數 806 閱讀 7069

做了乙個小例子

例子程式:

使用了內嵌彙編

int main()

彙編**:使用gcc -s 獲得

.file   "test.c"

.text

.globl main

.type main, @function

main:

leal 4(%esp), %ecx

andl $-16, %esp

pushl -4(%ecx)

pushl %ebp

movl %esp, %ebp

pushl %ecx

subl $16, %esp

movl $0, -8(%ebp)

mov %ebp, -8(%ebp)

movl $0, %eax

addl $16, %esp

popl %ecx

popl %ebp

leal -4(%ecx), %esp

ret.size main, .-main

.ident "gcc: (gnu) 4.1.1 20070105 (red hat 4.1.1-52)"

.section .note.gnu-stack,"",@progbits

可以發現,例子中的兩句分別對應文中紅色部分

這之前後之後的操作分別是壓棧和出棧的操作

最後main函式棧的儲存如下,如有錯誤請大家多多指教~

GCC內嵌彙編語法

內嵌彙編語法如下 asm 彙編語句模板 輸出部分 輸入部分 破壞描述部分 共四個部分 彙編語句模板,輸出部分,輸入部分,破壞描述部分,各部分使用 格開,彙編語句模板必不可少,其他三部分可選,如果使用了後面的部分,而前面部分為空,也需要用 格開,相應部分內容為空。例如 asm volatile cli...

ARM彙編和內嵌彙編

彙編指令 跳轉指令 b bl blxbx 資料處理指令 mov mvnadd adcsub rsbrsc andor eorbic cmncmp tstteq 狀態暫存器指令 mrs msrldr strldm stmmcr arm和協處理器之間資料交換 mrccond 可選的條件 rd 存放返回狀...

內嵌彙編和內聯彙編的使用

有時為了高效,有時為了直接控制硬體,有些模組我們不得不直接用組合語言來編寫,並且對外提供呼叫的介面,隱藏細節,這其實就是內聯彙編。如何使用內聯彙編?我們就以 gcc 為例,一窺其中奧秘!一 關鍵字 如何讓 gcc 知道 中內嵌的彙編呢?借助關鍵字!來看下面的例子 asm volatile hlt a...