* x64での即値MOV
 -(by [[K]], 2019.10.30
 
 ** (1)
 -なんかNASMにMOV命令をアセンブルさせていたら、見慣れない機械語が出てきた。
 -とりあえず、RAXに即値を代入するケースに注目する。
 |RAX=0|B8 00 00 00 00|64bitモードで32bitレジスタに代入すると自動でゼロ拡張されるらしいから、これで合っているのだろう|
 |RAX=0x1234|B8 34 12 00 00|同上|
 |RAX=0x0123456789ABCDEF|48 B8 EF CD AB 89 67 45 23 01|これは普通|
 |RAX=-1|48 C7 C0 FF FF FF FF|REX.W C7 /0 は、imm32を符号拡張してくれるらしい|
 |RAX=0|31 C0|フラグを汚してもいいのならこれで行ける|
 |RAX=-1|48 83 c8 FF|フラグを汚してもいいのならこれで行ける|
 -このほかにも、もし16本のレジスタのうちの一つを0で固定してもよければ(ゼロレジスタにしてもよければ)、LEAを使って4バイト命令長で-128から+127を64bitレジスタに代入できる。
 
 * こめんと欄
 #comment
 

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS