新闻中心

EEPW首页>嵌入式系统>设计应用> GNU ARM汇编--(十二)arm汇编指令的B真的那么简单吗?

GNU ARM汇编--(十二)arm汇编指令的B真的那么简单吗?

作者: 时间:2016-11-26 来源:网络 收藏
说句题外话,在输入“指令”二字的时候,就想起了google搜索时,提示“令”不能搜索,要我换词汇.如果不能说脏话,我真就无语了.

在前面对具体芯片的各个基本模块做完了学习后,在上一篇小结中自以为已经具备了自己写个bootloader的条件,但其实错了,我还有很多基本的知识不了解.比如编译链接gnu的linker script等等.也有很多地方只懂表面,没有做深入的理解.

本文引用地址://m.amcfsurvey.com/article/201611/321719.htm

在《GNU ARM汇编--(二)汇编编译链接与运行》中,仿照网上的例子做了makefile和linker script,在那篇blog的末尾我写道“根据google,做了上面的总结,对GNU ARM汇编有了认识,并且对系统调用软中断,中断处理,uboot异常向量表等等有了探究的欲望,也对elf格式和编译链接有了兴趣,根据自己的方向和精力,后续对这些内容做一个或深或浅的学习.”

当时看到了《linker and loader》,只是保存了,当时并没有细看,作为一个程序员,其实很多时候我们并不懂程序的细节.就像台湾有个黑客关于“hello world”的分析,当初看了他的"hello world"系列ppt,就发现原来简单的hello world里面有这么多不为人知的细节.

这些天翻看了《linker and loader》的前面几节,也翻了《程序员的自我修养--链接装载和库》,通读了gnu.org的ld相关文档linker script.自己还对gnu的这个文档的大部分做了翻译,在自己的笔记本上写了好多页,一根笔芯也用了大半,而且让我有了久违写字写到手酸的感觉.觉得收获不少.推荐去看看,值得的.

废话了这么多,这篇blog我倒不想写linker script或者ELF的一些细节.我想深究一下arm汇编指令中的B指令.

很多网上的帖子都讨论过arm汇编指令的B和LDR,这里我按照我的思路来:

首先翻一下《ARM ArchitectureReference Manual》这份绝对权威的手册:

看完上面的英文,再结合下面的实际例子做个呼应:

代码如下:

[html]view plaincopy
  1. _start:breset
  2. ......
  3. reset:
  4. ......


反汇编如下:

[cpp]view plaincopy
  1. 10000000<_start>:
  2. 10000000:ea00000eb10000040
  3. ......
  4. 10000040 :


上一页 1 2 下一页

关键词:ARM汇编汇编指

评论


技术专区

关闭