このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

ToySys

FPの指す場所

候補:第1引数を指す。引数がないときは、親の領域の最後。 候補:ローカル領域の最初を指す。ローカル領域がないときは、未使用領域の最初。 候補:戻り番地の格納場所を指す。 候補:旧FPの待避場所を指す。 どれでも大差ないけど。

レジスタの変化

レジスタ 命令 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(呼び出し用) レジスタやスタックトップをターゲットとしたジャンプ(戻り用) 入出力 定数…

トレードオフ

現状では: IP(命令ポインタ)、SP(スタックポインタ)、FP(フレームポインタ)、F(フラグ)を直接見ることもさわることはできない。 関数のプロローグコード、エピローグコードはほとんど不要。FPの保存、スタックのアンワインド(後かたづけ、たたむこ…

Toyアーキテクチャのヒント

単に箇条書きで羅列。 昔はスタックがない機械もあったらしい。まー、自前でも作れるが、メンドーだからスタックはあったほうがいい。 明確なコール/リターン命令がない機械もある。が、メンドーだからあったほうがいい。 コールで、戻り番地(当該命令の次…

低水準データ型

numeric character boolean

バイナリモドキのロケーション指定

バイナリモドキに、ロケーション指定を入れる。 Addr ::= Hex Hex Hex Hex Location ::= '@' Addr PseudoBin ::= (Delm | Byte | Repeat | FillUntil | Location)*

バイナリモドキ修正

バイナリモドキを少し修正。 2進数はなくてもいいや。 ニブル単位ではなくて、常にバイト単位で扱う。 Hex ::= [1-9A-Za-z] S ::= LF | CR | TAB | SPACE D ::= S | ',' Hex2 ::= Hex Hex Char ::= "'" [^\] EscapedChar ::= "'" '\'' [stnr'] Byte ::= Hex2…

バイナリモドキ

テキストエディタで書けるバイナリ 空白類(間隔、タブ、改行、復帰)、カンマは無視される。 #から次の改行まではコメント、無視される。 データ表現 16進ニブル : [0-9a-fA-F] アスキー文字 : 'に続けて文字 エスケープ表現 : \[\stnr'] sは間隔文字 2進ニ…