x86asm
ツールチェインを構成するライブラリ
x86_64アセンブリをアセンブル/ディスアセンブルする機能を提供する
対応命令
add
and
call
cmp
hlt
idiv
imul
je
jmp
lea
mov
movsx
or
pop
push
ret
sete
setg
setge
setl
setle
setne
sub
syscall
xor
対応オペランド
immediate
8bit
32bit
address
displacement
8bit
32bit
offset
8bit
32bit
register
8bit
32bit
雑記
異なる命令のエンコード・デコードでも、オペランドエンコーディングが同じなら同一の処理で行えることに気づいた
それはそうという感じではある
これに気づいたおかげでちょっとコードがきれいになった
REXプレフィックス・SIBバイトの生成がめんどい
ModR/Mバイトはまだやさしい
REXはオペランドに64bitレジスタを使っていても命令によって立てるビットが異なる
push / pop / set*、お前らのことやぞ
特に影響はないので、GNU as とは異なる出力をしている
SIBは0b100、0b101あたりが面倒
命令ごとにパラメータを指定して、それをもとにコードを自動生成したほうがよさそうな気がしている
実際そうしているライブラリも存在する