2020.09.23
as官方文档关于x86的很详细,但是mips的语焉不详。经过写test/
关于mips的inline assembly内联汇编,我发现并踩平了许多坑。
针对这些文档不详的体系结构的汇编,最好的老师便是让gcc生成c语言对应的汇编gcc -S
。
MIPS的as汇编语法
-
延迟槽,参考Strange jump in MIPS assembly
.set noreorder
不会自动添加nop到延迟槽,.set reorder
(as默认)会自动处理延迟槽,
-
和x86不一样的地方
- 操作数
- 顺序不分ATnT和intel格式,和指令手册一致(MIPS为数不多的闪光点,可是这和MIPS架构没啥关系,是ar的MIPS端的闪光点)
- 立即数直接写不用加
$
, - 寄存器前缀是
$
,而不是%
,
- 操作数
2021.01.09
MIPS宏汇编
参考X86toMips调研-续.md的2019.10.30和2019.10.31。
宏汇编的文件是binutils/include/opcode/mips.h
和binutils/opcodes/mips-opc.c
。