ぱたへね

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

2008-09-01から1ヶ月間の記事一覧

Exercise 2.20

null-terminate された文字列"A byte is 8 bits"のバイト数を求めなさい。 16文字+nullなので、合計17バイトになります。コンパイラを使って確認してみましょう char s[] = "A byte is 8 bits"; をsde-gccでコンパイルすると、こうなります。 .file 1 "c.c"…

Exercise 2.19

IrisとJulieの名前を、ASCIIとUnicode(Basic Laten character set)で表現しなさい。 テキストエディタで書いて、各文字コードで保存、バイナリエディタで覗いてみたら簡単にわかります。 ASCII Iris 49 72 69 73 Julie 4A 75 6C 69 65 UTF-8 Iris 49 72 69 7…

Exercise 2.16-2.18 Fibonacci number

フィボナッチ数を、再帰バージョンと末尾再帰バージョンにしたときの比較です。SICPの1.2.2 Tree Recursionと全く同じ問題ですね。 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.2 再帰バージョン iint fib(int n){ if (n == 0)…

FPGA初心者向けのテキスト

mixiでたっくさんに教わりました。セミナー自体はチェックしていたのですが、まさかテキストまで公開されているとは思いませんでした。 http://www-online.kek.jp/Seminar/fpgaseminar.htmlこちらの資料に目を通すだけで、FPGA開発に関して一通りの事は分か…

Tail Recursion

Tail Recursion とは 末尾再帰とは、関数の最後の命令がその関数自身の呼び出しであるような再帰呼び出しのことです。バイナリアン的には、どのように最適化されるかが面白いところですので、「末尾再帰は最適化できる」というスタンスで紹介します。 最適化…

末尾呼出の最適化:tail call optimization

末尾呼出の最適化とは 末尾呼出の最適化とは、ある関数f()の最後が別の関数g()を呼び出しているだけの場合、g()の呼出をcallでなくjmpに変える最適化です。わずかですが速度とサイズの両方を改善する反面、デメリットが非常に少なく、定数畳み込みと並んで私…