assembly - ShenYj/ShenYj.github.io GitHub Wiki
iOS 汇编主要分为
- 真机(arm64) -> arm64汇编
- 模拟器(x86) -> AT&T汇编
都属于 GNU 汇编
这里学习的目的并非是来编写汇编代码,而是为了更好的学习底层、调试问题,读懂汇编代码
-
文件后缀
.s
结尾 -
注释
在汇编中正常情况下以 分号(
;
) 标识注释,但是默认 Xcode下没有注释的颜色区分,Xcode
中也可以使用//
的形式来进行注释 -
基本语法规则
-
无参函数
-
.h
void test(void);
-
.m
.text ; 存在于代码段 // 否则默认对外不可见, 报错: Undefined symbols for architecture arm64: "_test" .global _test ; 全局符号 _test: ; 函数名 mov x0, #0x8 ret ; 函数返回
示例中的
#0x8
是一个立即数,推荐以#
开头并以十六进制
表达通常把在 立即寻址方式 指令中给出的数称为立即数
- 汇编中不区分大小写
-
-
有参函数
-
.h
void add(int a, int b);
-
.m
.text .global _test, _add _test: mov x0, #0x8 ret _add: // 将 x1 与 x0 参数相加,存放在 x0中 add x0, x0, x1 ret
-
-