2019-07-18 23:58 — asano
カテゴリー:
現時点でも6800, 6809, 8080, AVR, Z8, Z80と多くのプロセッサで動いているUniversal Monitorですが、まだまだ対応プロセッサは増やすつもりでいます。
すでに完成したボードがあって動かせるMC68000、SBC8088ボード購入済みであとは組み立てるだけの8086/8088、6502/65C816あたりが次の候補ですね。
これだけの多プロセッサ展開を前提としているのになぜC言語を使わないのか不思議に思われるかもしれません。
そこで今回は何故オールアセンブリ言語なのか書いてみようと思います。
- 移植性
どうしてアセンブリ言語のほうが移植性が高いのか疑問に思われるかもしれません。
メジャーどころや今時のプロセッサならCコンパイラはあって当然でしょう。でも私が対象にするようなプロセッサでは必ずしも存在するとは限りません。仮にあっても既に入手困難だったり、動作環境が特殊だったり、サブセットだったりします。
アセンブリ言語でも(少なくとも今対応している範囲では)半ば機械的に移植できています。もちろん各々のプロセッサに適した書き方というものはありますが、いったん動くものができれば少しずつリファクタリングすることもできます。 - モニタの特殊性
ROM化して起動させる、レジスタを設定してユーザプログラムにジャンプする、トラップでレジスタを読み取るなどアセンブリ言語でしか書けない処理がいくつもあります。一方でアセンブリ言語では書きにくい(面倒くさい)処理はあまりありません。
- そもそもの目的
これは私の個人的な話になります。
以前私のプロセッサ遍歴にも書いたようにかかわったことのあるプロセッサはそう多くはありません。実に多様なプロセッサが存在したのにその多くを無視してきました。資金(と時間)に余裕ができたことから実際にデバイスを入手し、ハードウエアを作り、ソフトウェアも書いてみよう、と追体験を思い立って始めた活動のソフトウェア部分の一つがこのUniversal Monitorです。
C言語で書いてしまったらわざわざそのプロセッサを使った意味が無くなってしまいます。
とりあえず思っていることを書きましたが、まだちょっと書き足りない気がしています。
コメントを追加