(转)GNU风格ARM汇编语法指南(非常详细)1
2014-03-25 16:39
239 查看
原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010111481551809/
汇编源程序一般用于系统最基本的初始化:初始化堆栈指针、设置页表、操作 ARM的协处理器等。这些初始化工作完成后就可以跳转到C代码main函数中执行。
任何Linux汇编行都是如下结构:[<label>:][<instruction or directive or pseudo-instruction>} @comment
instruction为指令
directive为伪操作
pseudo-instruction为伪指令
<label>: 为标号,GNU汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。
comment为语句的注释
下面定义一个"add"的函数,最终返回两个参数的和:
注意:
ARM指令,伪指令,伪操作,寄存器名可以全部为大写字母,也可全部为小写字母,但不可大小写混用。
如果语句太长,可以将一条语句分几行来书写,在行末用“\”表示换行(即下一行与本行为同一语句)。“\”后不能有任何字符,包含空格和制表符(Tab)。
汇编源程序一般用于系统最基本的初始化:初始化堆栈指针、设置页表、操作 ARM的协处理器等。这些初始化工作完成后就可以跳转到C代码main函数中执行。
1、GNU汇编语言语句格式 |
instruction为指令
directive为伪操作
pseudo-instruction为伪指令
<label>: 为标号,GNU汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。
comment为语句的注释
下面定义一个"add"的函数,最终返回两个参数的和:
.section .text, “x” .global add @ give the symbol “add” external linkage add: ADD r0, r0, r1 @ add input arguments MOV pc, lr @ return from subroutine @ end of program
注意:
ARM指令,伪指令,伪操作,寄存器名可以全部为大写字母,也可全部为小写字母,但不可大小写混用。
如果语句太长,可以将一条语句分几行来书写,在行末用“\”表示换行(即下一行与本行为同一语句)。“\”后不能有任何字符,包含空格和制表符(Tab)。
相关文章推荐
- windwos上创建多线程的方法
- 基于GNU make的开源大型项目多核并行编译框
- hibernate和ibatis区别
- win7自带无损分区且数据不丢失图文教程
- SQL*PLUS的命令行——column命令
- javaWeb jstl的基本库的定义, 迭代循环, 条件判断
- KVO/KVC
- java中如何打war包
- linux下tomcat的安装
- WebService大讲堂之Axis2(3):使用services.xml文件发布WebServic
- usb驱动笔记
- JavaCV中将Mat类型转换成IplImage
- 跨越终端中多个vim实例访问剪切板内容
- 数的某位置1 或置0
- 如何用腾讯电脑管家备份微信聊天记录
- 在VS2010中使用Git(转)
- skyline TerraBuilder 制作MPT方法与技巧(2)
- Insertion Sort List
- 分数类
- 中小企业服务器设置入门