計算機構成論

さて。試験。

始まる前に先生いわく

「学科長の立場からすると、みんなに卒業してもらわないといけないので、すごく簡単にしました。」

あー。確かに過去問と比べると簡単だ。

でも、満点とかは考えるまでもなく不可能な雰囲気。

3番を解いているときはすっかり試験などどうでもよくなって遊びに走ってました。

試験で考えた命令セット:

オペコードは2bitまたは4bit。

レジスタは4つとプログラムカウンタ。

アドレッシングモードは、レジスタ間接のみ。

即値はMOV命令でのみ仕様可。

比較演算は<=のみ可能。等号の比較は<=かつ=>でどうぞ。

レジスタは全て2ビットで表現。

アドレスは、すべてアドレスが格納されたレジスタを指定。

ADD(00) [DST],[SRC1],[SRC2]

SUB(01) [DST],[SRC1],[SRC2]

CMP(10) [DST],[SRC1],[SRC2] ;(SRC1<=SRC2 ? 1 : 0) BR(1100) [Cond],[Address] ;if(Cond!=0)PC=Address MOV(1101) [DST],[即値] ;値は2bit(0~3) LOAD(1110) [DST],[Address] STORE(1111) [Address],[SRC] この無理矢理さ加減が結構気に入った。 超不便だし・・・。 サンプルコードは続きに。

if(MEM[35]==0)MEM[35]=3; のアセンブリコード

(試験時間の半分はこれに費やされた;)

MOV R0 3

ADD R0 R0 R0

ADD R0 R0 R0

ADD R1 R0 R0

ADD R0 R1 R0

MOV R1 1

SUB R0 R0 R1 ;R0=35

LOAD R2 R0 ;R2=MEM[35]

MOV R1 0

CMP R3 R2 R1

MOV R1 1

SUB R3 R3 R1

BR R3 [下のほう] ;MEM[35]<=0なら継続 MOV R1 0 CMP R3 R1 R2 MOV R2 1 SUB R3 R3 R2 BR R3 [下のほう] ;MEM[35]==0なら継続 STORE R0 R1