ToDo:
面白い
http://cvs.m17n.org/~akr/diary/2007-03.html#a2007_03_12_2
via http://alohakun.blog7.fc2.com/blog-entry-707.html
まぁ lightning もそんな感じだったりはする。
/* N byte NOPs */ #define NOPi(N) ((( (N) >= 8) ? (_jit_B(0x8d),_jit_B(0xb4),_jit_B(0x26),_jit_L(0x00),_jit_B(0x90)) : (void) 0), \ (( ((N)&7) == 7) ? (_jit_B(0x8d),_jit_B(0xb4),_jit_B(0x26),_jit_L(0x00)) : \ ( ((N)&7) == 6) ? (_jit_B(0x8d),_jit_B(0xb6),_jit_L(0x00)) : \ ( ((N)&7) == 5) ? (_jit_B(0x90),_jit_B(0x8d),_jit_B(0x74),_jit_B(0x26),_jit_B(0x00)) : \ /* leal 0(,%esi), %esi */ ( ((N)&7) == 4) ? (_jit_B(0x8d),_jit_B(0x74),_jit_B(0x26),_jit_B(0x00)) : \ /* leal (,%esi), %esi */ ( ((N)&7) == 3) ? (_jit_B(0x8d),_jit_B(0x76),_jit_B(0x00)) : \ /* movl %esi, %esi */ ( ((N)&7) == 2) ? (_jit_B(0x89),_jit_B(0xf6)) : \ ( ((N)&7) == 1) ? (_jit_B(0x90)) : \ ( ((N)&7) == 0) ? 0 : \ JITFAIL(".align argument too large")))
http://mkosaki.blog46.fc2.com/blog-entry-104.html
の関係で教えてもらった時に調べた
http://shinh.skr.jp/m/?date=20070214#p05
での linux での数字と一致してるにゃん☆
(00:09)
パスモを買ってから、別にスイカでメトロに乗れることを教えられたのだった。
だからパスモをさっさと使い切って払い戻ししたいのだけど、 それまでは二枚あるから財布をほげほげしないと機械が怒り出す。
ところで僕の財布は今壊れていて、 ほげほげすると怒ってお金をそこらじゅうにばらまく。
困ったことだよ
(00:16)
w3mimg が確実にダメな例見つけた
http://graph.hatena.ne.jp/shinichiro_h/%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF/
再現するなんてありがたい
(03:08)
前 | 2007年 3月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
どのNOPを使えばいいかはIntelの最適化マニュアルに書いてあってそれと同じなわけなんだけど、マニュアルにはさらにLEAに使うレジスタは最も古い値を保持してるのを使うのがよいって書いてある。
さすがにそこまでやるのはやりすぎな気もするけど
ふむふむ面白いですね。マニュアル見るに、古いレジスタ使うっていうのはコンパイラにはやって欲しいな、ってところでしょうか。いやでもコンパイラってNOP作ったりはしないですかね…