C語言和彙編混合程式設計

2021-07-22 16:30:05 字數 443 閱讀 3934

在arm 的c語言程式中,使用關鍵字__asm(下劃線是兩個)來標識一段彙編指令。

彙編可以通過對c程式中的宣告的全域性變數進行地間接訪問:

1)使用import偽指令宣告所要呼叫的全域性變數;

2)使用ldr指令讀取全域性變數的記憶體位址,通常該全域性變數的記憶體位址存放在程式的資料緩衝池中;

3)根據該資料型別,使用相應的ldr指令讀取該全域性變數的值,或者使用相應的str指令修改該全域性變數的值。

要注意暫存器的使用規則:

1)子程式間通過暫存器r0~r3來傳遞引數;

2)暫存器r15是程式計數器,記作pc;

4)在子程式中,使用暫存器r4~r11來儲存區域性變數;

5)暫存器r13用於資料棧指標,記作sp,暫存器sp在進入子程式時的值和退出子程式時的值必須同等;

6)暫存器r12用於儲存sp,在函式返回時使用該暫存器出棧,記作ip。

C語言與彙編混合程式設計

c語言是乙個系統級的語言,是乙個可以直接深入到硬體最底層操作的語言。在前邊的部分部落格中,我們提到過,對硬體的操作實際上是對硬體控制器中的暫存器或儲存單元進行操作,而在arm架構中,這些暫存器或儲存單元一般是以記憶體對映的方式進行訪問的。在c語言中,指標剛好提供了訪問任意的記憶體位址的方式,因此從語...

ARM彙編 C語言 混合程式設計

主函式main 第一次實驗 12月4 這是我見過最坑爹的問題 main這個字段不能使用。在release模式下怎麼編譯都過不去,報錯如下 原因 不能使用main這個識別符號。用main main main1 mai都行,就是main不行。原來在debugrel模式下,使用main僅僅是乙個警告,沒想...

C和彙編混合程式設計

c和彙編混合程式設計 嵌入式裡面用到彙編的地方 開機時的硬體系統的初始化,包括cpu的狀態設定,中斷使能主頻設定,以及ram控制引數以及初始化一些中斷處理方面涉及一些彙編。c中內嵌彙編大多數為arm和thumb指令,其中注意 1 不能直接向pc賦值,程式跳轉用b或者bl指令 2 使用物理暫存器不能使...