ぽんこつメモ

https://github.com/kanorimon

年始のご挨拶のアセンブラ短歌

アセンブラ短歌を詠んだので、解説を書きます。

53 6a 02 0f 31
68 30 0a 31 0a 89 e1
83 e0 02 01 c1
5b 5b 6a 02 5a 6a 04
58 cd 80 31 c0 5b c3
push %ebx
push $2
rdtsc

push $('0'|'\n'<<8|'1'<<16|'\n'<<24)
mov %esp,%ecx

and $2,%eax
add %eax,%ecx

pop %ebx
pop %ebx
push $2
pop %edx
push $4

pop %eax
int $0x80
xor %eax,%eax
pop %ebx
ret
  • タイムスタンプカウンタの1bit目を使って、0or1が(体感では)ランダムに出力されるおみくじ仕様
  • 0bit目ではなく1bit目を使うことで、条件分岐でアドレスを2ずらすのをandとaddで書けるようにした

以上です。