在看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格式编译
.thumb 以thumb格式编译,同code16
.code16 以thumb格式编译
.code32 以arm格式编译
三、ARM汇编语言有个固定的模板:
程序入口 : "_start:" 是汇编程序的入口, 相当于 main();
标注入口 : 使用 ".global _start" 标注程序入口, 外部才可以识别这是程序入口;
标明代码段 : ".section .text" 标明这是一个代码段;
标明 bss 段 : 使用 ".section .bss" 标明bss段, 如果没有 bss 段 和 数据段, 直接从 .text 开始;
下面我们来搭建汇编开发调试环境
程序代码 :
定义代码段 : .text ;
定义程序入口 : .globl _start;
代码示例 :
本文深入探讨了rtems操作系统中start.s汇编文件的几个关键部分,包括.data、.bss和.text段。在_start标签下,可以看到初始化数据、未初始化数据的处理,以及汇编指令如mov r1,#1等用于设置寄存器值的操作。"
106244919,9042557,Java实现QQ一键登录教程,"['java', 'spring', 'spring boot', 'QQ互联', '登录']

363

被折叠的 条评论
为什么被折叠?



