ARM 汇编编程基础与数据操作
1. 全局符号与程序入口
在编程中,我们需要将 _start 定义为全局符号,这样链接器(构建文件中的 ld 命令)才能访问它。汇编器会将包含 _start 的语句标记为程序入口点,链接器就能找到它,因为它已被定义为全局变量。所有程序都会在某个地方包含这个入口点。不过要注意,程序可以由多个 .s 文件组成,但只有一个文件能包含 _start 。
2. 汇编指令
在示例中,我们仅使用了三种不同的汇编语言语句:
- MOV :用于将数据移动到寄存器。例如, MOV R1, #4 表示将数字 4 移动到寄存器 R1 中。这里的 4 是立即操作数,以 # 符号开头,它是指令的一部分,而非存储在内存的其他位置。在源文件中,操作数可以是大写或小写,个人倾向于在程序列表中使用小写。
- LDR :如 LDR R1, =helloworld 语句,用于将我们要打印的字符串的地址加载到寄存器 R1 中。
- SVC 0 :执行软件中断号为 0 的操作。它将控制权传递给 Linux 内核中的中断处理程序,该处理程序会解释我们在各个寄存器中设置的参数并执行实际工作。
3. 数据部分
.data 表示接下来的指令位于程
超级会员免费看
订阅专栏 解锁全文
2306

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



