1
アセンブリ言語のコーディングが新しく、ウェブのこの質問に対する回答を見つけることができませんでした。私は正しい質問をしているのかどうか分からないが、傷つけることはできないと思った。どんな助けでも大歓迎です。ARMv8でマクロをどのように定義しますか?
アセンブリ言語のコーディングが新しく、ウェブのこの質問に対する回答を見つけることができませんでした。私は正しい質問をしているのかどうか分からないが、傷つけることはできないと思った。どんな助けでも大歓迎です。ARMv8でマクロをどのように定義しますか?
以下の例では、 GNU AS compilerを使用しているものとします。
マクロはきれいで、私はそれらをたくさん使用しています。しかし、デバッグするのは苦痛なので注意が必要です。 Assemblyを初めてお使いの方は、ARMv7よりも多くの本、チュートリアルなどがあるので、最初にARMv7を学ぶことをお勧めします。
// 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