https://wenku.baidu.com/view/5553533503020740be1e650e52ea551810a6c9f4.html
android 系统调用指令对照
http://blog.csdn.net/zqixiao_09/article/details/50726544
[ARM 汇编指令集]
.ascii "Hello ARM!\000" @声明字符串
.text @声明代码段
.align 2 @声明对齐方式4字节
.global main @全局符号main
.type main, %function @main类型为函数
.section .text @声明节名
.arch armv5te @处理器架构
.fpu softvfp @浮点协处理器类型
.eabi_attribute 20, 1 @接口属性
.section .rodata @声明只读数据
..section .note.GNU-stack,"",%progbits @保护代码,禁止生成可执行堆栈
.flie :指定了源文件名。手写可忽略
.align :指定了代码对齐方式你后面跟的是2的次方
.ascii :声明字符串
.global :声明全局符号。全局符号是指在本程序外可访问的符号。
.type :指定符号的类型,“.type main,%function”表示main为函数
.word : 用来存放地址。
.size :设定指定符号的大小。“.size main,.-main”中的”.”表示当前地址,减去main符号的地址为整个main函数的大小。
.ident :编译器标识,无实际意义。
.quad 定义八个字节的数据
.string 和 .asciz 和 .sacii 一样都是定义多个字符串,.ascii 要加‘\0'
.rept 重复定义伪操作
.equ/.set 赋值语句
.if .else .endif 根据条件成立选择执行某个序列,和C语言一样
.macro 伪操作可以将一段代码定义为一个整体,成为宏指令,然后在程序通过宏指令多次调用这段代码
entry ;声明程序入口
area ff,code,readonly ;声明代码段
.byte .short .long .float .string .asciz .sacii .rept .quad
ARM汇编程序用“;”号进行注释
@ 注释
指令:
SWI 0 ;产生软中断,中断立即数是 0
ADR 小范围地址读取伪指令