龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > 汇编开发 >

GNU汇编

时间:2011-05-21 16:24来源:未知 作者:admin 点击:
分享到:
GNU汇编 注:所有关键字都以‘.’开头 一、基本 .archISA告诉汇编器当前汇编文件的指令集架构 {.section}.section_name{,"flags"}声明一个段的开始,以下一个段的开始或文件尾结束 section_name:

GNU汇编

注:所有关键字都以‘.’开头

一、基本

.archISA告诉汇编器当前汇编文件的指令集架构

{.section}.section_name{,"flags"}声明一个段的开始,以下一个段的开始或文件尾结束

section_name:

.text代码段

.data数据段

.rodata只读数据段

.bss未初始化数据段,bss段可以不声明

.mysection自定义段

flags:

a可分配段

w可写段

x可执行段

.codenumber_of_bits按number_of_bits设置ARM(32)或Thumb(16)指令

.globalsymbol符号导出,C默认是导出,不导出要加static,汇编默认是不导出

.alignpower_of_2{,fill_value{,max_padding}}

对齐到power_of_2字节,用fill_value或 0(默认值)来填充对齐

如需要填充的字节数大于max_padding,则对齐不会发生

alias_name .req register为register取一个别名,如: aa .req r0, bb .req aa

.include"filename"等于 C的#include "filename"

.err以一个错误导致汇编结束(是编译文件时结束而不时运行时)

.end表示一个汇编文件的结束,剩下的部分可以加注释,一般省略

#expr注释只能放在行的开头,注释至行尾

@注释可放在行的任意位置,注释至行尾

label_name:label_name表示当前的地址

二、数据类型

.ascii"string"定义字符串变量,不会在string后面自动加 ‘\0’

.asciz"string"定义字符串变量,会自动加‘\0’

.bytebyte1{,byte2}...定义char型变量(1字节),如有多个数据则是定义char数组

.hwordhword1{,hword2}...定义short型变量(2字节),如有多个数据则是定义short数组

.wordword1{,word2}...定义int型变量(4字节),如有多个数据则是定义int数组

.spacenumber_of_byte{,fill_byte}定义number_of_byte大小的空间,以fill_byte填充,fill_byte默认是 0

注:以上定义的数据类型都是当前段的全局变量 ,还有其它类似的数据类型,如:.string == .asciz, .int == .word,...

.commname,number_of_byte{,element_size}

在bss段定义number_of_byte大小的空间,name是该空间的起始地址

element_size只是说明每个元素的大小,可以不要

三、条件分支

.if定义一个条件代码块,以.endif结束

.ifdefsymbol"""

.ifndefsymbol"""

.elseifexpr使用在.if和.endif之间

.else使用在.if和.endif之间

.endif条件代码块的结束

四、循环

.irpparam {,val1}{,val2}{,val3}...开启一个循环的代码块,有多少个val就循环多少次,代码块中用\param来代替val

和shell的for i in类似

.reptnumber_of_times开启一个循环的代码块,循环number_of_times次

.endr结束.irp和.rept的循环

.irp i r1,r2,r3

movr0,\i

.endr

.rept 10

movr0,r1

.endr

五、宏

.equsymbol_name,value等于C的#define symbol_name value

.setvariable_name,value等于.equ

.macroname {arg1}{,arg2}{,arg3}...宏函数

.exitm退出宏函数

.endm宏函数结束

.macro NAME a,b

.if\a > \b

movr0,#\a

.elseif \b > 0

movr0,#\b

.else

exitm

.endif

.endm


精彩图集

赞助商链接