現在地

ASのIM6100対応を検討する


Nanoprocessor対応はAS-users MLに投げて無事本家にマージされました。

で次は何をやろうかなと考えているわけですが、V60は作者のAlfredさんが取り組んでいるような書き込みがありましたし、TRONは気軽に手を出せるようなシロモノではありません。

HD1-6120ボード(ソフトウェア編)で短ループのテストしただけになっているIM6100 / HD1-6120がASで使えるようになればUniversal Monitor移植も視野に入ってきます。

やってみたいのですが... IM6100系のアセンブラは結構特殊なところがあって楽ではなさそうです。気になる点について実現方法を考えてみました。

複合命令

やはりIM6100系の特徴といえばこの複合命令でしょう。通常、命令語は機能を表す部分が一つとその対象を表す部分がいくつか(0のこともある)で構成されていますが、IM6100系には機能を表す部分が複数あるのです。

例えばOperate Instruction (Group 3)というグループの命令は以下のようになっています。

1 1 1 1 CLA MQA - MQL - - - 1

CLA, MQA, MQLをすべて0にした7401(8)(IM6100系では通常8進表記します)はNOP命令(何もしない)、CLAのみ1にした7601(8)CLA命令(ACをクリア)、MQAのみ1にした7501(8)MQA命令(MQとACの論理和がACに入る)、MQLのみ1にした7421(8)MQL命令(ACの値をMQにいれ、ACをクリア)です。

MQAとMQLを1にした7521(8)にはSWP命令(ACとMQを入れ替える)というニーモニックが特別に用意されていますが、MQA MQLという書き方もできます。

この2つでなんでSWAP動作になるのか疑問に思うかもしれませんが、CLA → MQA / MQLの順に実行され MQAとMQLは同時に実行とあるのでソフトウェアの感覚で考えてはいけないのでしょう。

さらにACL, MQA, MQLをすべて1にした7721(8)は専用のニーモニックは無くCLA SWPなどと書くしかありません。

このニーモニックが複数並ぶというのがAS的にはちょっと厄介です。

  1. 複数行に分けて記述
    ニーモニックによる分岐の仕組みをそのまま利用し、直前の命令と一緒にできるなら一緒にする(ざっと見ただけですがμPD7720がこれに近いことやっているような)
  2. 組み合わせニーモニックを登録
    空白は含められないので「CLA/SWP」のように考えられる組み合わせのニーモニックを片っ端から登録する
  3. オペランドでテーブルを引く
    2つ目以降はオペランドとしてArgStr[]に入っているのでテーブルを引き直す

なるべくオリジナルのアセンブラ書式に合わせるという点では3がよいですが、有効な組み合わせかの判定が大変そうです。楽なのは2ですね。

区切り文字

複数のオペランドを持つ命令はありませんが、インダイレクトアドレッシングのJMP I LABELのように「I」とラベルの間を空白にしようとするとDivideChars = " ";としなければなりません。

また複合命令で3を採用する場合もこうしておかないと1つ目と2つ目のニーモニックの間は空白、2つ目と3つ目の間は「,」などということになってしまいます。

これやると式に空白使えなくなったり悪影響が大きそうです。

8進数

オリジナルでは8進なんですが...

強制的にRADIX 8してしまうのは影響が大きすぎるかな。

リスト出力はlistradix=8すれば見やすくはなりますが、16ビット分表示されてしまうんですよね。これ変更する方法あるのかな。

定数

ニーモニックの代わりにラベルや定数を書くとその値が配置される機能、独自のIOT命令などを簡単に定義できるし、DEFBみたいな疑似命令を用意しなくていいのは楽なのですが...

	if (!LookupInstTable(InstTable, OpPart.str.p_str))
		WrStrErrorPos(ErrNum_UnknownInstruction, &OpPart);

MakeCode_xxxx()のここでエラーにする前に式評価できるか試せば良いのかな。

文字列

文字列はどうするのが良いでしょう?

  1. 12ビットの下8ビットにASCIIのまま入れる
  2. 何らかのテーブルで6ビットにしてパックする
参考文献・関連図書: 
”Intersil IM6100 CMOS 12 bit Microprocessor”, Intersil.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。