资源描述:
《gnu汇编伪指令简介》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、GNU汇编伪指令简介1ARMGNU汇编伪指令简介 (1)abort .abort停止汇编 (2)align .alignabsexpr1,absexpr2以某种对齐方式,在未使用的存储区域填充值.第一个值表示对齐方式,4,8,16或32.第二个表达式值表示填充的值 (3)if...else...endif .if .else .endif:支持条件预编译 (4)include .include"file":包含指定的头文件,可以把一个汇编常量定义放在头文件中 (5)comm .comm symbol,length: 在bs
2、s段申请一段命名空间,该段空间的名称叫symbol,长度为length.Ld连接器在连接会为它留出空间 (6)data .datasubsection:说明接下来的定义归属于subsection数据段 (7)equ .equsymbol,expression:把某一个符号(symbol)定义成某一个值(expression).该指令并不分配空间 (8)global .globalsymbol:定义一个全局符号,通常是为ld使用 (9)ascii .ascii"string":定义一个字符串并为之分配空间 (10)byte .byteexpress
3、ions:定义一个字节,并为之分配空间 (11)short .shortexpressions:定义一个短整型,并为之分配空间 (12)int .intexpressions:定义一个整型,并为之分配空间 (13)long .longexpressions:定义一个长整型,并为之分配空间 (14)word .wordexpressions:定义一个字,并为之分配空间,4byteswordexpression就是在当前位置放一个word型的值,这个值就是expression举例来说,_rWTCON:.word0x15300000就是在当前地址,即_rWT
4、CON处放一个值0x15300000翻译成intel的汇编语句就是:_rWTCONdw0x15300000例如:ldrr1,_rWTCON_rWTCON:.word0x15300000不是把地址0x15300000上的内容传递到r1,是把地址_rWTCON上的内容放到r1,而地址_rWTCON上的内容是0x15300000。实际上就是把r1设置为0x15300000 (15)macro/endm .macro:定义一段宏代码,.macro表示代码的开始,.endm表示代码的结束,.exitm跳出宏,示例如下: .macroSHIFTLEFTa,b .ifb
5、<0 mova,a,ASR#-b .exitm .endif mova,a,LSL#b .endm (16)req name.reqregistername:为寄存器定义一个别名 (17)code .code[16
6、32]:指定指令代码产生的长度,16表示Thumb指令,32表示ARM指令 (18)ltorg .ltorg:表示当前往下的定义在归于当前段,并为之分配空间2ARMGNU专有符号 (1)@表示注释从当前位置到行尾的字符. (2)#注释掉一整行. (3);新行分隔符.3操作码 (1)NOP:nop空操
7、作,相当于MOVr0,r0 (2)LDR:ldr,=相当于PC寄存器或其它寄存器的长转移 (3)ADR:adr
8、bol) 指定可执行文件的入口段4.1.2段定义说明 1.段定义格式 SECTIONS {... 段名: { 内容 } ... }