id:n7shi:20100205に引き続いてa.outを分析します。アセンブリ版ではサイズ縮小のためセクションを削りましたが、セクションを確認するためC言語版を分析します。
int m[] = { 0, 1/*EXIT*/, 42, 0, 0, 0, 0, 0, 0 }; void start() { asm("mov eax, 0; mov ecx, 3; int 0x21" :: "b"(m)); }
配列をローカルで定義するとスタックへコピーされて冗長になるため、関数の外に出しました。
続きを読む