2.1 68Kのアーキテクチャ
2.1.1 68Kの特徴
2.1.2 68Kのレジスタ群
2.1.3 スーパバイザステート・ユーザステート
2.1.1 68Kの特徴
68Kには、3つの特徴がある。
第一に、セグメントという概念がない。そのため、常に16Mバイト(224バイト)のメモリ空間を一様にアクセスする事ができ
る。これは、機器組み込み用のCPUとして大きなメモリ空間があまり問題にならないときに、余計なオーバーヘッドがなく、都
合がよい。
第二に、68Kの内部レジスタは全て32ビットになっている。このため、剰余算やアドレス計算が容易に行える。更に、そのレ
ジスタ群は用途についてあまり制限がない汎用レジスタ方式をとっていて、レジスタ間のデータ転送やデータのセーブ・ロードの
回数が少なくてすむ。
第三に、68Kはスタックやキューを用いた演算処理ルーチンの記述が容易な命令セットとアドレッシングモードを持っている。
これは、CやPascalなどの構造化プログラミング言語の実行に際し、都合がよい。また、汎用レジスタ方式をとっているた
め、同時に複数個のスタックを管理できる。
2.1.2 68Kのレジスタ群
アドレスレジスタ(A0〜A7)
アドレスレジスタは、アドレスベースに使う事を目的としているので、アドレシングモードがたくさん作られてい
る。A0〜A6までがアドレスレジスタ、A7は裏表に分かれていて、それぞれスーパーバイザ用のスタックポイン
タ(SSP),ユーザ用のスタックポインタ(USP)として使用される。
データレジスタ(D0〜D7)
データレジスタは、いわゆるアキュムレータとして使うのに便利にできていて、下から8ビット及び16ビットに切
っても使える。(下の8ビットにデータをロードした時、上の24ビットは変化しない。)
プログラムカウンタ(PC)
PCは32ビットである。しかし、使用できるのは下位24ビットなので、アドレス空間は16Mバイトである。
ステータスレジスタ(SR)
SRは16ビット長で、上位半分はシステムバイト、下位半分はユーザバイトとなっている。システムバイトはシス
テムの状態を示し、ユーザステートのときはこ内容を書き換えられない。ユーザバイトはZ80のFレジスタのよう
なものである。
2.1.3 スーパバイザステート・ユーザステート
68KはOSの存在を前提としているため、システムプログラムが資源管理などの操作をすることができるように、実行時の状態
がスーパバイザステートとユーザステートに分かれている。
Fig 2.1 68kのレジスタ構成
特権命令
スーパバイザステートでしか実行できない命令。SRのシステムバイトの変更や、割込み処理に関する命令群。
2.1.4 68Kのデータ型
68Kは、1ビット(ビットデータ)、4ビット(BCDデータ)、8ビット(バイトデータ)、16ビット(ワードデータ)、3
2ビット(ロングワードデータ)のデータを取り扱うことができる。
レジスタ
データレジスタは4種類の長さのデータを全て保持することができる。アドレスレジスタは16ビット又は32ビッ
トを単位として扱う。
メモリ
データをメモリに記憶させる場合はワード(2ビット)を単位とする。この際、低アドレス側に上位バイトのデータ
を、高アドレス側に下位バイトのデータを納める。