我是汇编语言编码的新手,我无法找到这个网络问题的任何答案。我不确定我是否提出了正确的问题,但我认为它不会受到伤害。任何帮助将不胜感激。
答案 0 :(得分:1)
下面的例子假设一个人正在使用 GNU AS compiler
宏很整洁,我经常使用它们;但是,它们可能很难调试,所以要小心。如果您是Assembly的新手,我建议首先学习ARMv7,因为除了ARMv8之外,还有更多的书籍,教程等。
// push2
.macro push2, xreg1, xreg2
.push2\@:
stp \xreg1, \xreg2, [sp, #-16]!
.endm
// pop2
.macro pop2, xreg1, xreg2
.pop2\@:
ldp \xreg1, \xreg2, [sp], #16
.endm
// exit
.macro _exit
.exit\@:
mov x8, #93 // exit see /usr/include/asm-generic/unistd.h
svc 0
.endm
.macro gCode num // Grey code... https://en.wikipedia.org/wiki/Gray_code
.gCode\@:
mov x0, \num
eor x0, x0, x0, lsr 1 // G Code == B XOR (B >> 1 unsigned)
.endm