代码改变世界

随笔档案-2015年12月

ARMv7 .n和.w指令宽度指示符后缀

2015-12-22 13:20 by cascle, 778 阅读, 收藏, 编辑
摘要: Thumb code里,.n后缀强迫生成16bit的代码,即Thumb code,若是在arm code里用.n会报错,若是机器指令没有办法用16表示也会报错Thumb code里,.w后缀强迫生成32bit的代码,即arm code;在arm code里.w无效可以看指令的长度 阅读全文

ARMv7 ldr/str指令详解

2015-12-12 12:22 by cascle, 6951 阅读, 收藏, 编辑
摘要: 因为ARM的算术运算不支持直接操作内存地址,所以要把内存里的数据先加载进寄存器。ldr指令就是干这事的,称为间接取址模式。一共有3*3九种模式,先是直接偏移,先偏移,后偏移三大类,指的是如何对源操作数操作,是直接使用,还是在加载前对源操作数操作(比如地址加个数值),还是在加载后对操作数操作每个大类里... 阅读全文

ARM7ldr指令与ldr伪指令

2015-12-10 10:44 by cascle, 601 阅读, 收藏, 编辑
摘要: ldr伪指令的第二个操作数之前有个=,意思是第一个操作书 = 第二个操作数,相当明了核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text段里的内存地址)]这种基于PC的偏移量方式加载内存里的内容到寄存器看下源代码和反汇编的结果就清楚了伪指... 阅读全文

PC寄存器的真实状态

2015-12-09 22:32 by cascle, 440 阅读, 收藏, 编辑
摘要: 因为预取指令的关系,PC寄存器永远比当前的寄存器多两个指令,ARM模式为大8,Thumb模式为大2,这针对的是32bit的ARMv7的指令集In ARM state, the value of the PC is the address of the current instruction plus... 阅读全文

查看32bit的ARM(比如ARMv7)反汇编

2015-12-09 22:21 by cascle, 497 阅读, 收藏, 编辑
摘要: 1.使用./arm-eabi-as test.S -o test.o编译2.使用./arm-eabi-objdump -d test.o反汇编 阅读全文
点击右上角即可分享
微信分享提示