ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

x86

たのしいバイナリの歩き方

たのしいバイナリの歩き方を読んだので感想を簡単に。 内容 第一章と第二章は、ゆるふわバイナリ入門です。ツールを使って、逆アセ、メモリダンプを行いながら、アセンブラの雰囲気をつかんでいきます。第三章のバッファオーバーフローから一気に難易度が上…

80286のデータパス

x86

http://en.wikipedia.org/wiki/File:Intel_i80286_arch.svg続いてCISCを代表して286のデータパスを調べてみました。図はwikipediaを見てください。真ん中のバスがいろんな所に繋がっていて、ALUの入力のうち片方はレジスタですが、もう片方にメモリから読み…

関数呼び出しまとめ

5つのプロセッサで、関数呼び出しの方法をまとめました。 MIPS sparc sh ARM x86 レジスタ渡し可能な引数 4個まで 6個まで 4個まで 4個まで スタックを使用 戻り先の格納先 register register stack register stack 関数の呼出し jal call jsr bl call 関数…

関数呼び出しsh、ARM、x86編

残りのプロセッサについても、さっとまとめました。 Cソース/アセンブラはここにまとめてあります。 SH SHの場合、引数が4つまではレジスタ渡し、5つ目からスタックを使用します。 関数の呼出はjsr命令を使い、戻るときはrts命令を使います。 他のRISCプロセ…

2章 Ex2.4 即値の減算の比較

Exercise 2.4の発展で、他のCPUも調べてみました。とは言っても各CPUのデータシートを追っていくのは大変ので、Cソースをコンパイルして必要なところを抜き出しています。やっていることは、a = b + 10, a = b - 50; で、10の加算と50の減算です。フラグ関係…

2章 2.9 32bit即値のロード

教科書のSection 2.9に出てくる32bit即値の話。RISCプロセッサというのは、命令長が固定な為、命令長が32bitであれば、32bitの即値をそのまま入れることはできません。クロスアセンブラの環境ができたので、早速各CPUの比較をしてみましょう。各コマンドは本…

クロス環境の構築

適当に各プロセッサのCコンパイラを揃えてみました。勉強に使う分には十分だと思います。Cygwinがインストールしてあることが前提です。CQ出版のCDにも体験版などが入っているのですが、気軽にダウンロードできること、Optionが統一されているの理由でgcc系…