一. 分析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相关推荐

  1. 《Scala入坑笔记》一、Scala简介

    Scala 是 Scalable Language 的简写,网上没有发现谁问 Scala 怎么读,你是按 Scalable 的发音读作 ['skeɪlə] 还是喜欢读作斯卡拉? Scala 是一门多范 ...

  2. Jetson Nano入坑笔记(一)

    一.准备安装 (1)电源线MicroUSB电源线 (2)SD卡最少64GB (3)无线网卡:搭载了千兆以太网卡(Edimax EW-7811UN) (4)刷系统:把镜像写入SD文件 1.下载镜像注意2 ...

  3. JanusGraph入坑笔记(五)- GraphTraversal (Vertex centric)

    目录 一.Terminal Step 二.Vertex Step (Vertex centric) 首先我们假定读者对Gremlin语句有一定的了解,那么Traversal就是对gremlin语句用j ...

  4. react把表格渲染好ui_react 入坑笔记(五) - 条件渲染和列表渲染

    条件渲染和列表渲染 一.条件渲染 条件渲染较简单,使用 JavaScript 操作符 if 或条件运算符来创建表示当前状态的元素,然后让 React 根据它们来更新 UI. 贴一个小栗子: funct ...

  5. Redux 入坑笔记

    Redux 简要的说就是一个事件分发器和全局state控制台. Redux 有一个全局的state,通过将根组件包进Provider,将store分发给所有的子组件,而子组件通过connect方法,获 ...

  6. express模板引擎 html,Express新手入坑笔记之动态渲染HTML

    在日常项目中,我喜欢用Django做后端, 因为大而全 如果只是写一个简单服务的话, Express是更好的选择, Express是基于nodejs的一个后端框架,特点是简单,轻量, 容易搭建, 而且 ...

  7. 小白深度学习入坑指南

    小白深度学习入坑指南 小白深度学习入坑指南 写博客的初衷适合的人群 理论篇 说明 数学 CV ML DL 优化 实践篇 linux python 深度学习框架 框架学习 硬件配置 软件环境配置 常见的 ...

  8. 外包实习生怎么快速入坑--10K

    随着市场的变化,现在学历和工作经验要求越来越高,对于初步混工作经验的本科毕业生来说,往往前一年做实习生是比较好的选择. 如果刚起步,也没有非常牛逼的潜质,对于那些高智商,对技术有非常流弊钻研的人,当然 ...

  9. 肝货满满!CV学习笔记:入坑必备

    知乎:云时之间 链接:https://zhuanlan.zhihu.com/p/102044405 编辑:王萌 作者的话 最近因为一些原因被安排去做关于目标跟踪的一些工作,对我来说可谓是一个很大的挑战 ...

最新文章

  1. LeetCode简单题之拼写单词
  2. css 图片居中放大,不同比例图片居中缩放显示的三种方法
  3. 自学python数据分析要多久-如果只有1小时学Python,看这篇就够了
  4. java web系统拆分_Java系统中如何拆分同步和异步
  5. python网络编程案例_Python 网络编程_python网络编程基础_python高级编程
  6. poj-1659-Frogs Neighborhood-(图论-是否可图)
  7. CF1547F Array Stabilization (GCD version) st表 + 尺取/二分
  8. 文件的读写操作 c# 1614992256
  9. Bootstrap3 过渡插件
  10. c语言810除以1000,【答题】C语言程序设计问题与解释实验
  11. c++注释快捷键_JAVA编程中你一定要掌握的“快捷键”
  12. linux下configure命令详细介绍[转]
  13. C# MessageQueue例子
  14. 【数据库】解剖式学习无损分解
  15. jsp调整字体大小font_html font标签如何设置字体大小?
  16. 操作系统概念之定义和功能
  17. DIrectX错误,提示显卡驱动更新
  18. 双十一,程序员可太难了
  19. 无人机和地面三维激光扫描仪在1:500城市基本地形图测绘中的应用
  20. 互联网时代,站对了风口,猪都能飞起来

热门文章

  1. oracle mrp进程起不来,DataGuard中MRP无法启动的问题分析和解决
  2. 基于蓝牙适配器的PC与Android端通讯
  3. 高端课后晚托品牌“文启优思”获数千万A+轮融资,源道投资、高思教育、柏宏锐尔合投... 1
  4. 巧用模板方法模式,实现加载违禁词文件功能
  5. EDraw 图示制作专家 流程图
  6. 进制转换之十进制转换为D进制——整数部分除基取余法
  7. 许昌会计培训班多少钱?要学多久?
  8. Unity两个物体发生碰撞的条件
  9. 灵眸action_大疆Osmo Action灵眸运动相机值得买吗?
  10. 阿里云对象存储OSS用作网站静态文件加速的优势