C指標原理 7 C內嵌彙編

2021-09-13 17:58:19 字數 758 閱讀 8877

如何在內聯彙編中訪問c程式的區域性變數呢,請看下面這段**。

#include int main(void)
這個例子完成這個計算:(xa+xb)2=(6+2)2=16

不使用全域性變數與彙編**互動,我們必須使用擴充套件gnu的asm ,格式為:

asm("彙編**":輸出位置:輸入位置:改動的暫存器列表)

彙編**中涉及暫存器部分的使用2個「%」,如:使用%%eax表示eax暫存器

輸出位置、輸入位置的特殊命名規則為:

a為eax,ax,al;b為ebx等;c為ecx等;d為edx等;s為esi或si;d為edi或di

+讀和寫

=寫%如果必要,運算元可以和下乙個運算元切換

&在內聯函式完成之前,可以刪除或重新使用運算元

上述**中,彙編**部分為

輸出位置、輸入位置、改動的暫存器列表部分為:

:"=d"(result):"a"(xa),"b"(xb):"%ecx"

先來看彙編**部分,使用雙%號表示暫存器,比如:

"add %%ebx,%%eax\n\t"

關於輸出位置、輸入位置部分,可以這麼理解:將變數與暫存器繫結,繫結後,對暫存器的操作就是對變數的操作。

:"=d"(result):"a"(xa),"b"(xb)

將result與暫存器edx繫結,xa與暫存器eax繫結,xb與暫存器ebx繫結。

%ecx屬於需要改動的暫存器

C 學習筆記(7) C 語句

c 程式是一組函式,而每個函式又是一組語句。c 有好多種語句型別,上篇筆記總結的表示式可以轉化為語句,通常被稱作表示式語句。除此之外,還有空語句 返回語句 return 0 復合語句 程式塊 等。以上又被統稱為簡單語句。相對於簡單語句,c 還有類似於c語言的特殊語句,條件語句 迴圈語句以及轉移語句。...

7 C 類的使用

定義了乙個類之後,便可以如同用int double等型別符宣告簡單變數一樣,建立該類的物件,稱為類的例項化。類的定義實際上是定義了一種型別,類不接收或儲存具體的值,只作為生成具體物件的 藍圖 只有將類例項化,建立物件 宣告類的變數 後,系統才為物件分配儲存空間。class computer 類定義 ...

7C 折線分割平面

我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。input 輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n 0output...