你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
arm8686 发表于 2015-1-5 12:18 执行完 ADR 这行,PC指针减去 12 后,会 +4。 (PC - 8),刚好就是 MOV R0,#10 这行。
pathletboy 发表于 2015-1-5 12:16 ADR R4 ,start ;-》SUB R4,PC,#0x0c 运行这句的时候PC已经指向下一句了,所以实际减去的应该包含2句 ...
ADRL 始终汇编为两个 32 位指令。 即使使用单个指令就可完成地址访问,也会生成多余的第二个地址。
pathletboy 发表于 2015-1-5 12:43 为啥2个汇编你得看官方编译器怎么解释。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.du ...
pathletboy 发表于 2015-1-5 13:36 仔细看我给你的连接,你想要的答案上面都有,嵌入式学习,最重要的先要学会看文档,而不是问,问出来的东西 ...
与非朋 发表于 2015-1-5 14:29 额 好吧 我先看看
hlt512 发表于 2015-1-5 15:09 汇编还是会编, 反正已经不会了,哈哈
运行这句的时候PC已经指向下一句了,所以实际减去的应该包含2句指令所占的空间。
(PC - 8),刚好就是 MOV R0,#10 这行。
楼主可以试试 SUB R4,PC, #0x08,这应该是个死循环。
谢谢 大神 解释的真好 谢谢 我最近 再看ARM汇编 还有个问题
是
start MOV R0,#10
ADRL R4,start+6000;->ADD R4,pc,#0xe800
; ADD R4,R4,#0x254
ADRL
怎么成了两个汇编,这个伪指令为啥要变成 那俩ADD
谢谢!!!
谢谢 大神 解释的真好 谢谢 我最近 再看ARM汇编 还有个问题
是
start MOV R0,#10
ADRL R4,start+6000;->ADD R4,pc,#0xe800
; ADD R4,R4,#0x254
ADRL
怎么成了两个汇编,这个伪指令为啥要变成 那俩ADD
谢谢!!!
http://infocenter.arm.com/help/i ... 204ic/Cacecdga.html
我理解的是 因为一个指令放不开 那么大的地址 所以变成两个
书上说因为地址是程序相对偏移或寄存器相对偏移,ADRL产生与位置无关的代码。若label是程序相对偏移,则必需取值成与ARDL伪指令在同一代码区域的地址,否则连接后可能会超出范围。
什么叫位置无关的代码 什么叫同一代码区域 为什么会超出范围
PS 刚开始看arm 汇编 一肚子问题 请大哥耐心解答 非常感激
额 好吧 我先看看
恩恩 看到了 文档很全 谢了
反正已经不会了,哈哈
你这帖子水的好