汇编中.word的具体用途
原文地址:http://sdnydubing.blog.163.com/blog/static/13747057020112904958830/
_undefined_instruction: .word undefined_instruction
_undefined_instruction是一个标号,处理到这里时,asm会把undefined_instruction的值按16bit的形式放在此标号处。
ldr pc, _undefined_instruction
就是从_undefined_instruction处取值,即undefined_instruction, 并设置到pc中。
.word就是在这个地方放一个值。相当于在这里定义一个数据变量。用.word定义了一个16bit的数据。
并将underfined_instruction的值本身放在这里,因此,pc=undefined_instruction,实现跳转。
ldr 是把数据从存储器传输到寄存器上,格式如下:
ldr(条件) 目的寄存器,<存储器地址>
ldr r1, _rWTCON
_rWTCON:
.word 0x15300000
这两个语句是不是说把地址0x1530 0000 上的内容传递到r1? 而不是把0x1530 0000 放到r1 ?
不是把地址0x1530 0000 上的内容传递到r1,是把地址_rWTCON上的内容放到r1,而地址_rWTCON上的内容是0x15300000。实际上就是把r1设置为0x15300000
------------------------------------------
.word和0x1530 0000有什么关系?.word就是把expression上的值取出来? expression代表地址?
.word expression就是在当前位置放一个word型的值,这个值就是expression
举例来说,
_rWTCON:
.word 0x15300000
就是在当前地址,即_rWTCON处放一个值0x15300000
翻译成intel的汇编语句就是:
_rWTCON dw 0x15300000没有.long/.word
汇编程序就不知道你想在这里放一个多大的数据,
相当于数据类型。
另外还应注意:在arm7,9中(其他的我不清楚)arm指令集中一个字类型就是32位。
原文地址:http://ackerman.iteye.com/blog/796754
感觉一定要理解一些基本的概念,然后在看懂汇编的基础上,再分析uboot的流程。
1.关于汇编的语法
这里有两套汇编的语法:分为ARM公司的标准ARM汇编语言和GNU对ARM支持的GNU ARM汇编。ARM标准汇编语言即ARM公司的开发工具ADS里用的汇编语言;GNU汇编即在LINUX下用GCC编译的汇编。两者语法有少许差异。因此,通常我们下载的LINUX下的ARM接口代码放到ADS下是不能编译通过的,需要进行少许修改。
GNU AS语法即AT&T汇编语法,uboot用到的语法。
2.标签的含义
.globl _start _start: b reset
标签就是在某行程序代码前作一个标记,标签代表的是这行代码的地址。
.globl _armboot_start _armboot_start: .word _start
.word expression就是在当前位置放一个word型的值,这个值就是expression ,此处的含义就是建立一个全局标签_armboot_start,在这个位置上放置_start的值(可以这样理解,_armboot_start是一个地址,这个地址中的内容是_start),则下面的语句会把地址_armboot_start处的内容(_start)装载到r2中。
ldr r2, _armboot_start
这样做的目的是因为LDR指令的格式为:LDR{条件} Rd, <地址>。
3..word 0x0badc0de
含义:保留一个字,初始化一下。实际的值应该在运行时计算出来。(badcode吗,呵呵)。
4.关于判断是否拷贝到ram
如果是debug下,uboot直接运行在ram中,从而得到的_start值和TEXT_BASE是相等的,不需要拷贝。如果从flash启动,_start为0x0,TEXT_BASE是sdram的地址,二者是不相等的,需要拷贝。(TQ2440的SDRAM为64M,bank6,地址空间为0x30000000-0x34000000,TEXT_BASE设置为0x33D000000,即0x33D00000-0x34000000为uboot使用的空间+bss和其他的空间)。
见映射图
5.汇编中调用c函数
遵循ATPCS(ARM-THUMB procedure call standard)标准。
汇编中.word的具体用途相关推荐
- 伪指令相当于c语言的什么,ARM汇编中关于“.word”伪指令的概念(转)
PS:在u-boot源码时遇到_armboot_start._bss_start等这些变量,不知道指向什么地址,于是查了一下,弄清了ARM汇编中".word"这个伪指令是什么意思了 ...
- linux汇编中的注释,Linux 汇编器:对照 GAS 和 NASM
Linux 汇编器:对比 GAS 和 NASM 转自 http://www.ibm.com/developerworks/cn/linux/l-gas-nasm.html#ibm-pcon 与其他语言 ...
- 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)
From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...
- GUN ARM汇编中标号的引用在汇编和C语言中区别(monitor_flash_len = _bss_start - _armboot_start;)
u-boot/cpu/xx/start.S中: _TEXT_BASE: .word TEXT_BASE /*uboot映像在SDRAM中的重定位地址,我设置为0xa170 0000 */ .glob ...
- 计算机组成原理db和dw,汇编中的DW是什么意思那DB 它们什么作用
汇编中的DW是什么意思那DB 它们什么作用以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 汇编中的DW是什么意思那DB ...
- 【汇编】汇编中的函数
前言:本文章将讲解什么是函数,以及汇编中函数的存在形式,使用到的工具是DTDEBUG. 1.什么是函数? 在汇编中,函数就是一系列指令的合集,为了完成某个会重复使用的特定功能. 下 ...
- ARM官方汇编与ARM GNU汇编中的伪操作
以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 (1)嵌入式Linux ARM汇编 (2)GNU ARM 汇编基础 - wanli1024 - 博客园 (3)GNU ARM 汇编简介 ...
- 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)...
From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...
- 汇编中参数的传递和堆栈修正
在 Win32汇编中,我们经常要和 Api 打交道,另外也会常常使用自己编制的类似于 Api 的带参数的子程序,本文要讲述的是在子程序调用的过程中进行参数传递的概念和分析.一般在程序中,参数的传递是通 ...
最新文章
- HDU1083(二分图-匈牙利算法)
- SQLite简介与安装
- 【php】运算符优先级界定
- jQuery插件之Cookie
- 平时少用到的sql query
- ServiceStack.Redis常用操作 - 事务、并发锁
- 02 | 系统可用性:没有故障,系统就一定是稳定的吗?
- 【Linux系统编程】互斥锁
- 两台ROS相互通信,并测试节点
- 1.1 波士顿房价预测
- 原创,呵呵(一张图看明白),USB转TTL、USB转串口、USB转232的区别
- JME 3 入门教程 3 - Hello Assets
- arcgis api 4.13 —— Layer详细介绍
- 棋牌游戏网站支付接口那些事儿
- 嵌入式商业智能软件Wyn Enterprise正式步入V5.0时代!
- SpringMVC框架理解
- 送给程序员的话 - 大牛们的经典语录
- 单项目多JDBC驱动版本加载
- VQA4-2017-Hierarchical Question Image Co-Attention for VQA
- 以智慧城市为标杆打造立体防控,咫尺之间华丽转身
热门文章
- java.lang.SecurityException: Permission Denial: startForeground from pid=29734, uid=10484 requires
- linux中sigaction函数详解
- 阿里大牛的Java后端书架来啦,都是Java程序员必看的书籍
- bson java_使用Gobson / Mgo解组BSON数据
- 实例讲解CASS计算占地面积及土方量
- LAYUI 整合富文本编辑器
- 关于哈夫曼树与编码,带权路径长度
- Jetson Orin平台marvell 88Q2112 RGMII接口网络调试
- 数据结构--TopK问题
- 光伏频率电压解列装置