2008-09-27から1日間の記事一覧
いくつかのヒントを書く。高次セルを忘れる関手Cが高次圏だとして、|C|kはk次までのセルを考えた圏だとする。特に |C|0 = |C| = Obj(C) となる。|C|は忘却関手となり、次に述べるK(A)と随伴になる。このような随伴関係が一般化できないか。完全有向グラフAを…
レジスタ 命令 F ADD, SH*, EQ, GT, GE SP POP, PUSH, CALL, RET, OSP (Offset SP) FP CALL, RET IP J*, CALL, RET
定数生成 メモリからのロード、メモリへのストア レジスタ間転送 算術論理演算 比較演算(条件(condition)の生成) 無条件ジャンプ、条件ジャンプ Jamp and Link(呼び出し用) レジスタやスタックトップをターゲットとしたジャンプ(戻り用) 入出力 定数…
構造体は値としてやり取りできる(コンパイラがやってくれる) 呼ぶ側にバッファを準備してもらう。サイズも渡すのが吉。 呼ばれた側にある静的バッファを使う。マルチスレッドで無理がある。 呼ばれた側で動的メモリを確保して返す。free忘れで問題も起きる…
エラーは起きないと仮定 正常値と異常値を戻り値で 大域変数にエラー情報 エラー変数を出力引数に 戻り値を出力引数に 構造的データを使う 例:num ::= [0-9]* (8桁まで) エラーはBAD_CHARとTOO_LONG。
int g[] = {1, 2};main(int argc) { int i = 1; int j = 2; char *pc = (char *)g; start: printf("g = %p\n", g); printf("&g[0] = %p\n", &g[0]); printf("&g[1] = %p\n", &g[1]); printf("g + 1 = %p\n", g + 1); printf("g + 2 = %p\n", g + 2); printf(…
現状では: IP(命令ポインタ)、SP(スタックポインタ)、FP(フレームポインタ)、F(フラグ)を直接見ることもさわることはできない。 関数のプロローグコード、エピローグコードはほとんど不要。FPの保存、スタックのアンワインド(後かたづけ、たたむこ…
単に箇条書きで羅列。 昔はスタックがない機械もあったらしい。まー、自前でも作れるが、メンドーだからスタックはあったほうがいい。 明確なコール/リターン命令がない機械もある。が、メンドーだからあったほうがいい。 コールで、戻り番地(当該命令の次…
numeric character boolean
被加数 + 加数 = 和 被減数 - 減数 = 差 augend + addend = sum minuend - subtrahend = diffrerence 英語ではオシリにendが付くのね(オシリだからそりゃendだろうって?)