迷彩 潜伏 隐蔽 伪装
分类: C/C++
2013-10-09 10:38:03
原文地址:as汇编介绍及as汇编命令 作者:liyongchao89
点击(此处)折叠或打开
1 .align abs-expr1,abs-expr2,abs-expr3
.algin是汇编对齐命令,用于在当前子区中把位置计数器设置到下一个指令存储边界处,第一个绝对值表达式abs-expr1指定要求的边界对齐值。对于使用a.out格式目标文件的80x86系统,该表达式的计数值表示位置计数器增加后其二进制最右边0的个数,即是2的幂值。
第二个表示用于对齐而填充的字节值,该表示与其前面的逗号可以省略。若省略表示填充字节值是0
第三个表达式abs-expr3用于指定对齐操作允许填充跳过的最大字节数。
2 .ascii "string"...
从位置计数器所指的当前位置为字符串分配空间并存储字符串,可使用逗号分开写出多个字符串。例如
.ascii "Hello world!","my assembler"。该汇编命令会让as把这些字符串汇编在连续的地址位置处,每个字符串后边不会自动添加\0(NULL)字符
3 .asciz "String"...
该汇编命令与.ascii 类似,但每个字符串后边会自动添加\0(NULL)字符
4 .byte expressions
该汇编命令定义0个或多个用逗号分开的字节值,每个表达式的值时1字节
5 .comm symbol,length
在bss区申明一个命名的公共区域,在ld连接过程中,某个目标文件中的一个公共符号与其他目标文件中的公共符号合并。如果ld没有找到一个符号的定义,而只是一个或多个公共符号,那么ld就会分配指定长度length的未初始化内存。如果找到多个长度不懂但符号相同的公共符号,ld就会分配最大的空间
6 .data subsection
该汇编命令通知as把随后的语句汇编到编号为subsection的data子区中,如果省略编号,默认为0
7 .desc symbol,abs-expr
用绝对表达式的值设置符号symbol的描述字段n_desc的16为值,仅用于a.out格式的目标文件
8 .fill repeat,size,value
该会汇编命令产生数个大小为size字节的重复拷贝
9 .global symbol或 .globl symbol
该命令使得ld连接器可以看得见symbol符号。如果我们目标文件使用了定义符号,那么它的值能被连接过程中的其他目标文件使用
10 .int expression
该汇编命令在某个区设置0个或多个整数值。每个用逗号分开的值就是运行时刻的值,如.int 1234,567,0x89AB
11 .lcomm symbol,length
为符号symbol指定的局部公共区域保留长度为length字节的空间
12 .long expressions
含义与.int相同
13 .octa bignums
这个汇编命令指定0个或多个用逗号隔开的16B大数
(.byte,.word,.long,.quad,.octa分别对应1、2、4、8、16字节数)
14 .org new_lc,fill
这个汇编命令把当前计数器设置为值new_lc,new_lc是一个绝对值。具有相同区作为子区的表达式不能使用.org跨越各区。当位置计数器增长是,所越过的字节将被填入值fill
15 .quad bignums 表示8B大数
16 .short expressions表示0个或多个分开的2字节数
17 .space size,fill
该汇编命令产生size字节,每个字节值填fill
18 .string "string"
定义一个或多个用逗号分开的字符串
19 .text subsection
定义正文子区,可以省略编号subsection,如果省略默认为0
20 .word expressions
对于32为机器,该命令与short含义相同