ぱたへね

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

ARM

関数呼び出しまとめ

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プロセ…

jump table

jump tableとは何か jump tableとは、アセンブラやCにおいて制御の飛び先(jump先)を配列にして並べた物です。jump tableのイメージ図はこのようになります。Cのswtich文のように、同じような条件で複数の飛び先がある場合を考えます。 int foo(int k){ int f…

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系…