diff --git a/arm_asm.md b/arm_asm.md index 74cd5d8f..ac84302c 100644 --- a/arm_asm.md +++ b/arm_asm.md @@ -2682,17 +2682,18 @@ loop: なおトークンとしてはコロンは取り除く。タイプのenumで区別。 ラベルのシンボル化はパーサーでは無くバイナリ吐く方でやりますか(どっちでもいいけど)。 -### アドレス用に辞書を持ってくる +### アドレス用に辞書を第一回から持ってくる ラベルのアドレス用の辞書を作る。 先頭から現在のemitterの位置を覚えておき、ラベルが来たらこの辞書にその位置を追加。 -辞書のキーはintにしておく。ハッシュ関数は単なる剰余で(手抜き)。 +辞書のキーはintにしておく。 + +辞書は今回はstreqも無いし、配列にkeyとvalueを入れて、全部比較していく、という実装で良いかと(第一回でハッシュの手前に実装した奴) ### bのサポート -bをサポートする。ラベルの部分は0でも入れておいて、 -解決が必要な物を集めるリストに登録する。線形リストでいいでしょう。 +bをサポートする。ラベルの部分は0でも入れておいて、解決が必要な物を集めるリストに登録する。線形リストでいいでしょう。 解決の時の為に取っておくべき情報は @@ -2736,6 +2737,7 @@ add, cmp, lsr, andあたりをサポートする。 これで一応2章でやったアセンブリと同じ事は全部出来るはず? +この簡易アセンブリでprint_loop、putchar_mem、print_hex_memあたりを書き直して実行してみる。 # 06 Cの関数をより詳細に理解する