ARM彙編器與GCC彙編器支援的組合語言差別

2021-05-28 10:21:01 字數 2727 閱讀 6707

將arm sdt下的彙編**移植到gcc for arm編譯器時,經常要做如下修改:

1、[注釋]

;  =>  /* */ 或者 //

2、[偽操作符替換]

jumpaddr  =>  jumpaddr:   -- 符號定義加:號

include  =>  .include

equ  =>  .equ

tclk2  equ  pb25 =>  .equ  tclk2, pb25

tclk2  equ  pb25 =>  .equ  tclk2, pb25

dcd  =>  .long .word

if :def:  =>   #if defined(macro_sample)

else =>  #else

endif =>  #endif

:or: =>  |

:shl:  =>  <<

entry  =>  entry:

end  =>  .end

area word, code, readonly =>  .text

area block, data, readwrite =>  .data

code32  =>  .arm

code16  =>  .thumb

ltorg  =>  .ltorg

%  =>  .fill

macro  =>  .macro

mend =>  .endm

export =>  .global

import =>  .extern

gbll gbla =>  .global

setl seta  =>  #define 或者.equ

equ  =>  #define

get option.a  =>  #include "option.a"

??  =>  .align

3、[運算元及運算符號替換]

ldr pc, [pc, #&18]  替換成   ldr pc, [pc, #+0x18]

「&」  =>  「+0x」

ldr pc, [pc, #-&20]  替換成   ldr pc, [pc, #-0x20]

「-&」  =>  「-0x」

ARM的ADS彙編器與GCC彙編器

arm的ads彙編器與gcc彙編器 2009 10 14 10 06 彙編器與指令集,不同的cpu對應不同的指令集 不同的彙編器對應不同的語法和偽指令集。每種彙編器都可以有自己的偽指令集和自己的語法,但實際上,由於事實標準的原因,所有的cpu廠商會提供指令使用手冊,手冊中的指令書寫樣式,實際上就是事...

實現乙個彙編器

上文 彙編器原始碼剖析 中,我們對一彙編器進行了原始碼剖析,這裡我們仿照其實現乙個自己版本的彙編器,90 的東西都是借鑑於上文中的原始碼。實現乙個彙編器,首先需要定義乙個彙編指令集,這裡我們還是沿用上文中的彙編指令集。彙編指令與指令之間是一一對應的關係,也就是說是直譯的過程。我們的指令集是列舉型別,...

GNU彙編器 irp和 macro

最近從u boot中摘了一段 出來 源於kernel 這段 作用是用軟體 彙編 實現除法和取模運算,因為有些老的cpu是沒有相關的硬體指令的。在編譯的時候,彙編器報了一些錯誤,這些錯誤都是同一型別,這裡僅列出其中的乙個 error bad instruction reteq lr 錯誤本身還是比較好...