f1c100s入坑笔记(4)-uboot学习stepbystep-1
一. 分析uboot之前先简单学习一下Lin参考下的汇编指令,参考 http://blog.sina.com.cn/s/blog_59b189220100au1k.html
1. Linux汇编与windows的不同
- (1)寄存器名上要加%,例如 : pushl %eax
- (2)立即数前要加$, 例如: pushl $1
- (3)源操作数在左边,目标操作数在右边,例如: add $1, %eax
- (4)操作数的字长由最后一个字符决定(b=8bit,w=16bit,l=32bit), 例如 move val, %al
- (5)绝对转移和调用指令(jump/call)的操作数前要加*号做前缀
2. Linux汇编的行结构
- 任何汇编行都是如下结构:
[:] [} @ comment
[:] [} @ 注释 - Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。
3. Linux汇编的标号
- 标号只能由a~z,A~Z,0~9,“.”,_等字符组成。
- 标号为0~9的数字时为局部标号,局部标号可以重复出现,使用方法如下:
标号f: 在引用的地方向前的标号
标号b: 在引用的地方向后的标号
例子:
1:
subs r0,r0,#1 @每次循环使r0=r0-1
bne 1f @跳转到1标号去执行
局部标号代表它所在的地址,因此也可以当作变量或者函数来使用。
4. Linux汇编程序的分段
- (1) .section伪操作, 用户可以通过.section伪操作来自定义一个段,格式如下:
.section section_name [, "flags"[, %type[,flag_specific_arguments]]]
其中 flags = a 表示允许段
flags = w 表示可写段
flags = x 表示可执行段
每一个段以段名为开始, 以下一个段名或者文件结尾为结束。这些段都有缺省的标志(flags),连接器可以识别这些标志。 - (2).align 2 表示2字节对齐
- (3)汇编系统预定义的段名
.text @代码段
.data @初始化数据段
.bss @未初始化数据段
.sdata @
.sbss @
需要注意的是,源程序中.bss段应该在.text之前。
5. 定义入口点
- 汇编程序的缺省入口是 _start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点。
- 例子:
.section.data
< initialized data here>
.section .bss
< uninitialized data here>
.section .text
.globl _start
_start:
<instruction code goes here>
f1c100s入坑笔记(4)-uboot学习stepbystep-1相关推荐
- 《Scala入坑笔记》一、Scala简介
Scala 是 Scalable Language 的简写,网上没有发现谁问 Scala 怎么读,你是按 Scalable 的发音读作 ['skeɪlə] 还是喜欢读作斯卡拉? Scala 是一门多范 ...
- Jetson Nano入坑笔记(一)
一.准备安装 (1)电源线MicroUSB电源线 (2)SD卡最少64GB (3)无线网卡:搭载了千兆以太网卡(Edimax EW-7811UN) (4)刷系统:把镜像写入SD文件 1.下载镜像注意2 ...
- JanusGraph入坑笔记(五)- GraphTraversal (Vertex centric)
目录 一.Terminal Step 二.Vertex Step (Vertex centric) 首先我们假定读者对Gremlin语句有一定的了解,那么Traversal就是对gremlin语句用j ...
- react把表格渲染好ui_react 入坑笔记(五) - 条件渲染和列表渲染
条件渲染和列表渲染 一.条件渲染 条件渲染较简单,使用 JavaScript 操作符 if 或条件运算符来创建表示当前状态的元素,然后让 React 根据它们来更新 UI. 贴一个小栗子: funct ...
- Redux 入坑笔记
Redux 简要的说就是一个事件分发器和全局state控制台. Redux 有一个全局的state,通过将根组件包进Provider,将store分发给所有的子组件,而子组件通过connect方法,获 ...
- express模板引擎 html,Express新手入坑笔记之动态渲染HTML
在日常项目中,我喜欢用Django做后端, 因为大而全 如果只是写一个简单服务的话, Express是更好的选择, Express是基于nodejs的一个后端框架,特点是简单,轻量, 容易搭建, 而且 ...
- 小白深度学习入坑指南
小白深度学习入坑指南 小白深度学习入坑指南 写博客的初衷适合的人群 理论篇 说明 数学 CV ML DL 优化 实践篇 linux python 深度学习框架 框架学习 硬件配置 软件环境配置 常见的 ...
- 外包实习生怎么快速入坑--10K
随着市场的变化,现在学历和工作经验要求越来越高,对于初步混工作经验的本科毕业生来说,往往前一年做实习生是比较好的选择. 如果刚起步,也没有非常牛逼的潜质,对于那些高智商,对技术有非常流弊钻研的人,当然 ...
- 肝货满满!CV学习笔记:入坑必备
知乎:云时之间 链接:https://zhuanlan.zhihu.com/p/102044405 编辑:王萌 作者的话 最近因为一些原因被安排去做关于目标跟踪的一些工作,对我来说可谓是一个很大的挑战 ...
最新文章
- LeetCode简单题之拼写单词
- css 图片居中放大,不同比例图片居中缩放显示的三种方法
- 自学python数据分析要多久-如果只有1小时学Python,看这篇就够了
- java web系统拆分_Java系统中如何拆分同步和异步
- python网络编程案例_Python 网络编程_python网络编程基础_python高级编程
- poj-1659-Frogs Neighborhood-(图论-是否可图)
- CF1547F Array Stabilization (GCD version) st表 + 尺取/二分
- 文件的读写操作 c# 1614992256
- Bootstrap3 过渡插件
- c语言810除以1000,【答题】C语言程序设计问题与解释实验
- c++注释快捷键_JAVA编程中你一定要掌握的“快捷键”
- linux下configure命令详细介绍[转]
- C# MessageQueue例子
- 【数据库】解剖式学习无损分解
- jsp调整字体大小font_html font标签如何设置字体大小?
- 操作系统概念之定义和功能
- DIrectX错误,提示显卡驱动更新
- 双十一,程序员可太难了
- 无人机和地面三维激光扫描仪在1:500城市基本地形图测绘中的应用
- 互联网时代,站对了风口,猪都能飞起来
热门文章
- oracle mrp进程起不来,DataGuard中MRP无法启动的问题分析和解决
- 基于蓝牙适配器的PC与Android端通讯
- 高端课后晚托品牌“文启优思”获数千万A+轮融资,源道投资、高思教育、柏宏锐尔合投... 1
- 巧用模板方法模式,实现加载违禁词文件功能
- EDraw 图示制作专家 流程图
- 进制转换之十进制转换为D进制——整数部分除基取余法
- 许昌会计培训班多少钱?要学多久?
- Unity两个物体发生碰撞的条件
- 灵眸action_大疆Osmo Action灵眸运动相机值得买吗?
- 阿里云对象存储OSS用作网站静态文件加速的优势