十七.伪指令

来源:互联网 发布:淘宝详情页素材 编辑:程序博客网 时间:2024/04/29 03:56
1.机器码
由汇编程序经过汇编器生成,有一定的格式,不同的指令有不同的格式,以数据传送类指令

后面的低12位表示的数据范围有限,所以要用伪指令来处理这种困局。

2.定义类伪指令:主要在编译的时候起作用
看起来像指令的作用一样,但是只是像而已。它本身不产生机器码,而是在编译的时候起作用,告诉编译器如何编译,另一种作用就是转换为其他的实际的指令。
GNU风格一般会在前面加上一个点
(1)global:把一个符号定义为全局的。通常标号类似于c语言的子函数
(2)data:用来定义数据段。存放已初始化的数据。
(3)ascii:字符串类型的数据
(4)byte:字节型数据
(5)word:子数据
(6)equ:类似于C语言的宏定义     .equ  DA,0x89
(7)align:控制对齐。加在需要被对齐(被调整)的标号(地址/指令)之前


3.操作类伪指令
(1)ldr:和存储器访问指令ldr同名。前面不需要加一点。
但是一般的指令能访问的立即数不能超过二进制的8位,因为机器码的低12位有四位是用来存放移位情况的,所以只有8位可以用来存放真实的操作数。
此时的立即数用=来标示使用的是ldr伪指令而不是存储器访问指令ldr。
ARM的pc指针指向当前指令的后面的8个偏移量
(2)nop:空操作,延时。为了满足时序要求。

4.常用反汇编来查看指令的实际动态,进场对比机器码


































































0 0
原创粉丝点击