第1阶段——关于u-boot目标文件start.o中.globl 和.balignl理解(3)
汇编程序中以.
开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为伪操作.
.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 //复位异常 0x0
4 ldr pc, _undefined_instruction //未定义的指令异常 0x4
5 ldr pc, _software_interrupt // 软件中断异常 0x8
6 ldr pc, _prefetch_abort //内存操作异常 0xc
7 ldr pc, _data_abort //数据异常 0x10
8 ldr pc, _not_used //未使用 0x14
9 ldr pc, _irq //中断IRQ异常 0x18
10 ldr pc, _fiq //快速中断FIQ异常 0x1c
11
12 _undefined_instruction: .word undefined_instruction //0x20
13 _software_interrupt: .word software_interrupt //0x24
14 _prefetch_abort: .word prefetch_abort // 0x28
15 _data_abort: .word data_abort //0x2c
16 _not_used: .word not_used //0x30
17 _irq: .word irq //0x34
18 _fiq: .word fiq //0x38
19
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.
它们的作用就是为内存做标记,插在那里,这个位置往前有特殊作用的内存,禁止访问。
第1阶段——关于u-boot目标文件start.o中.globl 和.balignl理解(3)的更多相关文章
- 在Unix系统上,从源文件、目标文件、可执行文件的编译过程
是由“编译器驱动”(compiler driver)完成的: unix> gcc -o hello hello.c 在这里,gcc的编译器驱动程序读取源文件hello.c, #include & ...
- GNU中的处理目标文件的若干工具
AR 创建静态库,插入.删除.列出和提取成员: SRING 列出目标文件中的字符串: SIRIP 从目标文件中删除符号表信息: NM 列出目标文件符号表中定义的符号: SIZE 列出目标文件中节的名字 ...
- GCC编译器原理(二)------编译原理一:目标文件
一.目标文件 在 UNIX® 和 Linux® 中,任何事物都是文件.UNIX 和 Linux 编程实际上是编写处理各种文件的代码.系统由许多类型的文件组成,但目标文件具有一种特殊的设计,提供了灵活和 ...
- 使用mac 终端 用sublime 目标文件或目标文件夹
首先,打开终端 执行命令 vim ~/.bash_profile在.bash_profile里输入以下命令alias subl="'/Applications/Sublime Text.ap ...
- Linux下目标文件分析
文章来源:华清远见嵌入式学院,原文地址:http://www.embedu.org/Column/Column699.htm 作者:冯老师,华清远见嵌入式学院讲师. 1. 程序源码如下: 2.命令 g ...
- 如何使weblogic11g类似weblogic923一样统一使用一个boot.properties文件
如何使weblogic11g类似weblogic923一样 统一使用一个boot.properties文件 1.在weblogic域下创建文件boot.properties输入用户密码例如:usern ...
- C#如何获取快捷方式指向的目标文件
前几天,做个小程序时遇到的问题,在百度上搜索了很久,没有发现好的解决方案,在英文网站上立刻搜到办法,看来还是国外的资源要全面一些,只是Google经常访问不正常,没办法啊. “C#如何获取快捷方式指向 ...
- strip, 关于去除目标文件种的不必要信息
对于so动态库及可执行文件,可以直接调用不带参数的strip (-s, 即--strip-all)去除大多数不必要的信息.因为so库非常标准,所以strip之后仍然可以进行完美的动态连接:而可执行文件 ...
- 查看目标文件是否是以-fPIC编译的, ar 打包命令将多个静态库打包到一个里面
readelf --relocs foo.o | egrep '(GOT|PLT|JU?MP_SLOT)' 上句大多数时候(和平台有关)可以正确判断是否是以fPIC选项编译的,如果输出为空,基本可以表 ...
随机推荐
- 第五章之S5PV210将u-boot.bin从SD卡中搬到DDR中
1,在完成上一节的memory初始化后,接下来在arch/arm/cpu/armv7/start.S的160行:如下图 2,跳转到arch/arm/lib/board.c下的board_init_f函 ...
- 如何编写轻量级 CSS 框架
Github 地址: https://github.com/nzbin/snack Demo 演示: https://nzbin.github.io/snack/ 前言 这篇文章我已经酝酿了半年之久, ...
- ubuntu下安装opencv库+Python2.7环境安装及开发摄像头拍照应用
好久没有更新了,今天更一篇最近遇到的问题,及解决办法,后面博客得继续写起来 安装 #使用Python下的lib库直接进行安装 apt-get install python-opencv 测试 #使用如 ...
- Java集合框架Collections【List/Set】
1.基本介绍: 集合就是存放对象的,他比数组好的一点就是他一开始不清楚自己长度 容器一般是分为很多种的,很多的容器在一起然后进过断的抽象和抽取就成了一个体系,我们称之为集合框架 我们看体系首先是看顶层 ...
- asp.net 程序,当发生找不到文件的错误时,如何正确定位是哪个文件?
需要在Global.asax.cs中添加Application_Error代码如下,在Log中查看是哪个文件缺失: protected void Application_Error(object se ...
- Mysql事务处理详细讲解及完整实例下载
一.Mysql事务概念 MySQL 事务主要用于处理操作量大,复杂度高的数据.由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.在 MySQL 中只有使用了 Inn ...
- 小球自由落体动态模拟(Position Based Simulation)
在过去的几十年中,基于物理的三维物体动态模拟成为了计算机图形学的研究热点,其中最常见的方法是基于力(force-based)的模拟方法,比如弹簧质点模型,它把物体抽象成一系列质点以及连接这些质点的弹簧 ...
- android学习笔记之GridView的使用
除了listview会使用适配器外,还有一种就是GridView,listview是单列多行的显示形式,适用于多项目的查看.而GridView是多行多列的显示形式,一般用在查看图片样式的activit ...
- echarts之词云随机颜色的配置
echarts中的词云字体产生随机颜色,最主演的是要引入worldcloud.js,另外还要有jquery.js文件与echarts.js文件的引入,通过配置即可实现词云随机颜色的产生.下面为大家介绍 ...
- c++类与初始化,const
--c++类与初始化,const --------------------------------2014/09/04 1. 类的定义(头文件.声明文件)看成类的外部接口,一般写成.h头文件. 2. ...