asm

シンボル間の引き算

再配置情報について調べてたらアセンブリでのシンボル間の引き算についてelf/i386とmach-o/x86-64で挙動が違ったのでめも. elf/i386 の場合 (実行環境: Ubuntu 10.04LTS (linux 2.6.32), GNU assembler version 2.20.1 (i486-linux-gnu)) まず.シンボル間…

エンディアンの話

asm

・x86の場合 nasm(intel syntax) mov dword[eax+0x08],0x1234 アセンブル結果 c7 40 08 34 12 00 00機械語解読のためにはオペコードのフォーマットに関する知識が必要で、詳しくはインテルのマニュアル参照ですが簡単にまとめると prefix(1-4byte) opcode(1-…

GASのローカルシンボルネーム

asm

linuxのコンテキストスイッチは以下のようになってます. (http://lxr.linux.no/linux+v3.2.7/arch/x86/include/asm/system.h#L48) 59 asm volatile("pushfl\n\t" /* save flags */ \ 60 "pushl %%ebp\n\t" /* save EBP */ \ 61 "movl %%esp,%[prev_sp]\n\t"…