ARM汇编的几个问题

原创 2007年09月23日 23:20:00

转载时请注明出处和作者联系方式

作者联系方式:会飞的鱼 <parker30_liu at hotmail dot com>

最近在调试ARM硬件版的程序时遇到一些汇编代码,需要对其中的一些代码作些修改。其中有些ARM汇编代码的问题和技巧,将其记录在此,以备之后查找。

 

问题一:thumb模式下PC指针是如何计算预取值的

和其他现代的处理器一样,ARM处理器在指令执行时是要进行指令预取的,其向前预取了两条指令。在ARM模式下,PC指针的预取值是8(一条指令4个字节)。在thumb模式下,PC指针的预取值是否就是4(一条指令2个字节)呢,答案是不一定。将thumb模式下的adr伪指令生成的机器码反汇编后,发现若当前的指令是4字节对齐的地址时,PC指针的预取值是4,若当前的指令不是4字节对齐的地址,PC指针的预取值是2

下面的汇编码是一个获取自身入口地址的函数,其中mov r0, r0相当于nop操作。若标号1的地址是4字节对齐的,则adr r0, funcentry则会用指令add r0, pc, #-8替代。若标号1的地址不是4字节对齐的,则adr r0, funcentry则会用指令add r0, pc, #-6替代。

funcentry:

    mov r0, r0

    mov r0, r0

1:   adr r0, funcentry

    bx lr



 

VB调试过程中的几个问题

  • 2012年05月19日 14:40
  • 28KB
  • 下载

安装Mysql最新版本mysql-5.7.10-winx64出现的几个问题解决

电脑是64位的安装不了Windows (x86, 32-bit),Mysql installer MSI ,然后下载了Windows (x86, 32-bit), ZIP Archive 这种是免安装...

编写软件测试计划需要考虑的几个问题

软件测试是有计划、有组织和有系统的软件质量保证活动,而不是随意地、松散地、杂乱地实施过程。为了规范软件测试内容、方法和过程,在对软件进行测试之前,必须创建测试计划。 《ANSI/IEEE软件测试文档...

关于计算机普及教育的几个问题

  • 2011年05月12日 18:42
  • 42KB
  • 下载

排队论中几个问题的探讨

  • 2011年12月13日 20:29
  • 553KB
  • 下载

关于luci的几个问题<一>

最近,由于项目的原因,现在总结几点: 1.luci运行的流程? 答: 首先,我们从/www/cgi-bin/文件开始,运行luci文件中代码: #!/usr/bin/lua luci.disp...

初学时常见的几个问题

  • 2011年12月29日 18:07
  • 191KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ARM汇编的几个问题
举报原因:
原因补充:

(最多只允许输入30个字)