rtems start.s中一些汇编字符的学习

本文深入探讨了rtems操作系统中start.s汇编文件的几个关键部分,包括.data、.bss和.text段。在_start标签下,可以看到初始化数据、未初始化数据的处理,以及汇编指令如mov r1,#1等用于设置寄存器值的操作。" 106244919,9042557,Java实现QQ一键登录教程,"['java', 'spring', 'spring boot', 'QQ互联', '登录']
在看start.s时有些汇编不理解,

1:  .arm是什么意思?
2:.globl _start 的作用?
3:.section ".bsp_start_text", "ax"  的意思?

通过下面的解释就一目了然了。

一、汇编一般使用的场合:
(1)、汇编语言在ARM中一般用在启动代码中,比如Bootloader 初始化时对 CPU 和 协处理器 等进行初始化, 此时没有建立起 C 语言运行环境, 这个时候使用汇编语言执行初始化操作;
(2)、汇编效率比较高, 在Linux 内核中对效率有特殊要求的地方也会使用汇编语言来编写. 

二、ARM汇编的分类:汇编语言可以分为ARM标准汇编语言和GNU汇编语言两种;
他们使用的地方是不同的,一般来说ARM标准汇编语言适用于ARM公司的汇编器, 适合在 Windows 平台使用, 如ADS
而GNU汇编语言适用于 Linux 平台交叉编译工具链的汇编器。
补充: ARM标准汇编语言和GNU汇编语言的区别: ARM汇编代码是大写,后者是小写;前者的伪指令前不加点,后者要加点。
 


GNU ARM汇编特殊字符和语法
代码行中的注释符号: ‘@’
整行注释符号: ‘#’
语句分离符号: ‘;’
直接操作数前缀: ‘#’ 或 ‘$’
 
.arm 以arm格式编译,同code32 
.thumb 以thumb格式编译,同code16
.code16 以thumb格式编译
.code32 以arm格式编译


三、ARM汇编语言有个固定的模板:
[html]  view plain  copy
  1. .section .data  
  2. < 初始化的数据>  
  3. .section .bss  
  4. < 未初始化的数据>  
  5. .section .text  
  6. .global _start  
  7. _start:......  

程序入口 : "_start:" 是汇编程序的入口, 相当于 main();

标注入口 : 使用 ".global _start" 标注程序入口, 外部才可以识别这是程序入口;
标明代码段 : ".section .text" 标明这是一个代码段;
标明 bss 段 : 使用 ".section .bss" 标明bss段, 如果没有 bss 段 和 数据段, 直接从 .text 开始;
  下面我们来搭建汇编开发调试环境

程序代码 :
定义代码段 : .text ;
定义程序入口 : .globl _start;
代码示例 :
[html]  view plain  copy
  1. .text  
  2. .globl _start  
  3. _start:  
  4. mov r1,#1  
  5. mov r2,#2  
  6. mov r3,#3  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值