1. 程式人生 > >常用的ARM彙編指令集與彙編呼叫C語言

常用的ARM彙編指令集與彙編呼叫C語言

***指令與偽指令:

指令:CPU機器指令的助記符,經過編譯後得到一串10組成的機器碼,可以被CPU直接讀取執行。
偽指令:編譯器環境提供,用來指導編譯過程,最終不會生成機器碼。

***LDR/STR架構:

CPU不能直接對記憶體的內容進行操作,必須藉助CPU的特殊暫存器對記憶體進行載入處理。
ldr指令將記憶體內容載入到通用暫存器,str將暫存器的內容載入至記憶體。

***指令字尾: 常用的字尾名: B 功能不變,操作長度變為8位; H 功能不變,操作長度變為16位; S 功能不變,運算元變為有符號; S(S標誌) 功能不變,影響CPSR標誌位。

***跳轉指令: b:直接跳轉; bl:跳轉前將返回的地址放入lr之中,以便於返回,函式的呼叫; ***C語言的呼叫: C語言的執行需要一定的條件,這些條件由彙編來完成。 C語言的區域性變數設定在棧上,如果C語言的區域性變數落空,則程式就會跑空。

在微控制器程式之中,硬體為其提供了一個預設可用的棧,
在編譯器gcc中,在連結時自動會新增一個頭,這個頭由彙編編寫,引導C語言的實現。

ARM 之中有37個暫存器,每一個模式之下都有自己獨立的sp暫存器。

找到自己模式下的棧,系統在復位後預設進入SVC模式,先把模式設定為SVC,再直接操作SVC。
復位之後,外部的DRAM尚未初始化,目前可用的只有內部的SRAM,因此我們從SRAM設定棧。

棧:滿減棧,  滿增棧  空減棧  空增棧