x86勉強会

http://atnd.org/events/5976
行ってきた。x86という言葉でくくるのはちょっと内容が偏りすぎではなかったかと思う。x86というならユーザ空間上のプログラムがもうちょっとありそうというイメージ。
OS自作に手を出したことのある人ならまあ、大体知ってる内容かなぁという感じ。エミュレータについては気合しかないですというだけの話だった。

Javaは32bit符号無し演算が無い?シフトはあるけど比較無いんか。
エミュレータは周辺機器の再現のほうが泥臭いというイメージがあるな。CPUは仕様ちゃんとしてるし、色々技法が研究されてるけど、周辺機器は何が仕様かわからないとかよくあるし…

あまり関係無いけど、leaveてなんでマイクロコードに分解されるのだろうか。今時のコンパイラも使ってるんだし、あのぐらいなら今のx86ならそんなに大した作業ではないと思うのだけど…レジスタふたつ書き換えるのがよくないのかね。
TSSはもうobsolete気味で、特に64bitではスタック切り替えのためだけに使われてると、僕の記憶が言ってるが、どうだったっけ。誰かfxsave,fxrstorについて教えてくれ。

  • トレーサ

ユーザ空間でトレースする方法は色々限界がきたので、ページテーブルとかに手を出すことになったのだと思うが、これまでの歴史みたいなのが見たいかなぁ…
http://hp.vector.co.jp/authors/VA028184/OllyDbgQA.htm#B7
http://www.symantec.com/connect/ja/articles/windows-anti-debug-reference

あれを検出する方法は…えーと、センシティブ(?)なプログラムは一個のページに置いて、そこに判定処理入れるとかすればなんとかなる?

  • 龍芯

中国はちゃんと漢字で名前作るからいいよね…SHとかも得須叡智とかにすればよいのに。(暴走族みたいやな…)
ソフトウェア的に工夫はしてないのか。EFLAGSとかちょっと解析すれば大分なんとかなると思うのだけど。EFLAGSは実装コスト低いから別にいいとかなのかね?

MIPS上でqemu動かしてボトルネックだった箇所をハードウェアで高速化したというだけのもので、とくに見るべき点はないと思う。
ネタとしてはqemu自体のほう面白い気がする。 http://www.usenix.org/event/usenix05/tech/freenix/full_papers/bellard/bellard.pdf (読んだことないけど)

あとあまり関係ないけど、龍芯というと512bit Vectorの話がもうすぐ。 http://www.hotchips.org/program/conference-day-two/

  • x86トレーサ

↓これを読んでいったほうが内容があるという感じかな…
http://d.hatena.ne.jp/a4lg/
http://d.hatena.ne.jp/xna/

色々すごい、が、対策する側はわかっていれば簡単だという点が、なんか、労力に見合ってないという気がする。
悪意を持ってないプログラムのデバックに使うなら、もうちょっと制限緩くしてもいいと思うし…