博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第1阶段——关于u-boot目标文件start.o中.globl 和.balignl理解(3)
阅读量:4694 次
发布时间:2019-06-09

本文共 1863 字,大约阅读时间需要 6 分钟。

汇编程序中以.开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为伪操作.


 

.globl _start

作用:声明一个_start全局符号(Symbol), 这个_start这个符号要被lds链接脚本用到

 

.balignl 16,0xdeadbeef

  

作用:以当前地址开始,在地址为16的倍数的指令位置的上一个指令填入为0xdeadbeef的内容。

 


实例,在start.o中有以下几段:

1 .globl _start                             // .globl定义一个全局符号"_start",表明_start这个符号要被链接器用到 2 _start:	                                  //_start:系统复位设置,以下共8种不同的异常处理3 b reset                                   //复位异常             0x04 ldr	pc, _undefined_instruction          //未定义的指令异常       0x45 ldr	pc, _software_interrupt             // 软件中断异常          0x8 6 ldr	pc, _prefetch_abort                 //内存操作异常           0xc7 ldr	pc, _data_abort                     //数据异常               0x108 ldr	pc, _not_used                       //未使用                 0x149 ldr	pc, _irq                            //中断IRQ异常            0x1810 ldr	pc, _fiq                          //快速中断FIQ异常        0x1c11 12 _undefined_instruction:	.word undefined_instruction         //0x2013 _software_interrupt:	.word software_interrupt               //0x2414 _prefetch_abort:	.word prefetch_abort                  // 0x2815 _data_abort:	.word data_abort                          //0x2c16 _not_used:	.word not_used                              //0x3017 _irq:	.word irq                                       //0x3418 _fiq:	.word fiq                                       //0x3819 20 .balignl 16,0xdeadbeef                                  //0x3c 

在第1行中".globl _start":

使用.globol声明全局符号_start,在 board/100ask24x0/u-boot.lds中ENTRY(_start)这里用到_start是一个符号,符号在汇编程序中代表一个地址,然后在lds链接脚本中通过这个_start全局符号来跳转到_start所在的地址来进行复位异常处理。

第20行中 .balignl 16,0xdeadbeef:

它的意思就是在以当前地址开始,在地址为16的倍数的指令位置的上一个指令填入为0xdeadbeef的内容,

此时当前地址刚好0x3c=60,由于ARM每个指令间隔4个字节,且64%16=0,所以在0x3c中填入0xdeadbeef。仿真如下图所示,可以看出在0X3C处填入了0xdeadbeef.

它们的作用就是为内存做标记,插在那里,这个位置往前有特殊作用的内存,禁止访问。

 

  

转载于:https://www.cnblogs.com/lifexy/p/7171507.html

你可能感兴趣的文章
又一道软通动力7K月薪面试题——银行业务调度系统
查看>>
Matlab画图-非常具体,非常全面
查看>>
ReactJS入门
查看>>
linux网站配置文件.htaccess伪静态转换到IIS web.config中
查看>>
CodeForces 1B
查看>>
win10应用UserControl
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
我是怎么用缠论在商品里边抢钱之二 (2019-07-12 15:10:10)
查看>>
python入门之正则表达式
查看>>
SAS学习经验总结分享:篇五-过程步的应用
查看>>
Android创建文件夹及文件并写入数据
查看>>
file的getPath getAbsolutePath和getCanonicalPath的不同
查看>>
课时4—切入切出动画
查看>>
eclipse 编辑 python 中文乱码的解决方案
查看>>
Python 爬虫的集中简单方式
查看>>
数据库MySQL/mariadb知识点——触发器
查看>>
Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
查看>>
Binary Agents
查看>>