GCC在C語言中內嵌彙編

2021-08-30 23:19:50 字數 566 閱讀 4545

[url]

[size=large]

1、簡單的內嵌彙編

例: [/size]

__asm__ __volatile__("hlt");
[size=large]

__asm__表示後面的**為內嵌彙編。

__volatile__ 表示編譯器不要優化**,後面的指令保留原樣。

括號裡面的hlt是彙編指令。

2、內嵌彙編舉例

使用內嵌彙編,要先編寫彙編指令模板,然後將c語言表示式與指令的運算元相關聯,

並告訴gcc對這些操作有哪些限制條件。例如在下面的彙編語句:

[/size]

__asm__ __violate__ ("movl %1,%0" : "=r" (result) : "m" (input));

[size=large]

"movl %1,%0"是指令模板;"%0"和"%1"代表指令的運算元,稱為佔位符,

內嵌彙編靠它們將c 語言表示式與指令運算元相對應。

[/size]

GCC內嵌彙編

gcc內嵌彙編 限制字元 限制字元有很多種,有些是與特定體系結構相關,此處僅列出常用的限定字元和i386中可能用到的一些常用的限定符。它們的作用是指示編譯器如何處理其後的c語言變數與指令運算元之間的關係,例如是將變數放在暫存器中還是放在記憶體中等,下表列出了常用的限定字母。b 將輸入變數放入ebx ...

GCC內嵌彙編語法

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

GCC中的內嵌組合語言

一.宣告 雖然linux的核心 大部分是用c語言編寫的,但是不可避免的其中還是有一部分是用組合語言寫成的。有些組合語言 是直接寫在彙編源程式中的,特別是linux的啟動 部分 還有一些則是利用gcc的內嵌組合語言嵌在c語言程式中的。這篇文章簡單介紹了gcc中的內嵌式組合語言,主要想幫助那些才開始閱讀...