用彙編的眼光看C (之嵌入彙編)

2021-06-01 21:03:26 字數 1293 閱讀 8893

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編:(1)提高**的工作效率 ,使用到cpu的一些特殊指令,比如說mmx指令;(2)對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的**中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實證明一切。

(1)使用嵌入彙編的時候,注意暫存器的保護

cpp** 

int process()  

return 1;  

}  

(2)呼叫函式的時候,直接使用call即可,返回值用eax傳遞,同時注意堆疊平衡

cpp** 

int add(int a, int b)  

int process()  

return 1;  

}(3)計算的時候注意指標和數值的差別

cpp** 

void process()  

assert(value == 2);  

return ;  

}(4)全域性資料的訪問

cpp** 

static

int global = 10;  

void process()  

assert(global == 11);  

return ;  

}(5)迴圈的跳轉

cpp** 

void process()  

assert(value == 10);  

return ;  

}(6) 關中斷的指令在vc中並不能被執行,會產生異常

cpp** 

void process()  

return ;  

}(7) vc6.0支援mmx指令集,但是vs2005支援mmx和sse指令集

(8)如果工程中存在*.asm彙編檔案,那麼需要按照下面的步驟進行操作

a) 選擇【project】-> 【setting】

b) 單擊左邊的工程,選擇某乙個*.asm檔案,右邊的tab會出現兩個選項,分別是general和custom build

c) 在commands中輸入對應的編譯指令,至於是masm還是nasm型別,請參考對應的編譯手冊

用彙編的眼光看C (之嵌入彙編)

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編 1 提高 的工作效率 使用到cpu的一些特殊指令,比如說mmx指令 2 對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的 中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實...

用彙編的眼光看C (之嵌入彙編)

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編 1 提高 的工作效率 使用到cpu的一些特殊指令,比如說mmx指令 2 對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的 中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實...

用彙編的眼光看C (之嵌入彙編)

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編 1 提高 的工作效率 使用到cpu的一些特殊指令,比如說mmx指令 2 對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的 中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實...