コンテンツにスキップ

MIX (プログラミング)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

MIX  The Art of Computer Programming (TAoCP) 使1960 MIX  TAoCP  MMIX MIX  MMIX MIXware  MMIXware MIX/MMIX GNU MDK 

TAoCP MIX [1] MIX  1009 MIX  MIX 16mix[2][3]

[]


MIX 6 0 6312 0 9951MIX 163

1 1,073,741,823  1,073,741,823  9,999,999,999  9,999,999,999 -MIX  0  +0 2使

[]


MIX 9

rA: 15

rX: 1

rI1, rI2, rI3, rI4, rI5, rI6: 2

rJ: 2

6(first:last) 01

MIX 3
± A1 A2 A3 A4 A5
± X1 X2 X3 X4 X5
+ J4 J5
OV?
<=>?
± I1.4 I1.5
± I2.4 I2.5
± I3.4 I3.5
± I4.4 I4.5
± I5.4 I5.5
± I6.4 I6.5

メモリと入出力[編集]


MIX4000 0  3999 

 0 7

815

16

17

18

19

20

[]


1421rIx 11使

MIX 使使使

MIXMIXAL 使
LDA ADDR,i (0:5) rA := memory[ADDR + rIi];
LDX ADDR,i (0:5) rX := memory[ADDR + rIi];
LD? ADDR,i (0:5) rI? := memory[ADDR + rIi];
LDAN ADDR,i (0:5) rA := - memory[ADDR + rIi];
LDXN ADDR,i (0:5) rX := - memory[ADDR + rIi];
LD?N ADDR,i (0:5) rI? := - memory[ADDR + rIi];
STA ADDR,i (0:5) memory[ADDR + rIi] := rA;
STX ADDR,i (0:5) memory[ADDR + rIi] := rX;
ST? ADDR,i (0:5) memory[ADDR + rIi] := rI?;
STJ ADDR,i (0:5) memory[ADDR + rIi] := rJ;
STZ ADDR,i (0:5) memory[ADDR + rIi] := 0;
ADD ADDR,i (0:5) rA := rA + memory[ADDR + rIi];
SUB ADDR,i (0:5) rA := rA - memory[ADDR + rIi];
MUL ADDR,i (0:5) (rA,rX) := rA * memory[ADDR + rIi];
DIV ADDR,i (0:5) rA := int( (rA,rX) / memory[ADDR + rIi]);
rX := (rA,rX) mod memory[ADDR + rIi];
ENTA ADDR,i rA := ADDR + rIi;
ENTX ADDR,i rX := ADDR + rIi;
ENT? ADDR,i rI? := ADDR + rIi;
ENNA ADDR,i rA := - ADDR - rIi;
ENNX ADDR,i rX := - ADDR - rIi;
ENN? ADDR,i rI? := - ADDR - rIi;
INCA ADDR,i rA := rA + ADDR + rIi;
INCX ADDR,i rX := rX + ADDR + rIi;
INC? ADDR,i rI? := ADDR + rIi;
DECA ADDR,i rA := rA - ADDR - rIi;
DECX ADDR,i rX := rX -ADDR - rIi;
DEC? ADDR,i rI? := rI? - ADDR - rIi;
CMPA ADDR,i (0:5) rA を memory[ADDR + rIi] と比較;
CMPX ADDR,i (0:5) rX を memory[ADDR + rIi] と比較;
CMP? ADDR,i (0:5) rI? を memory[rIi + ADDR] と比較;
JMP ADDR,i goto ADDR + rIi;
JSJ ADDR,i rJ := 次の命令のアドレス;
goto ADDR + rIi;
JOV ADDR,i if (overflow) then
   overflow := false; goto ADDR + rIi;
JNOV ADDR,i if (no overflow) then
   goto ADDR + rIi;
else overflow := false;
JL, JE, JG ADDR,i
JGE, JNE, JLE ADDR,i
if (less, equal, greater) then goto ADDR + rIi;
if (no less, unequal, no greater) then goto ADDR + rIi;
JAN, JAZ, JAP ADDR,i
JANN, JANZ, JANP ADDR,i
if (a<0 / a==0 / a>0) then goto ADDR + rIi;
if (a>=0 / a!=0 / a<=0) then goto ADDR + rIi;
JXN, JXZ, JXP ADDR,i
JXNN, JXNZ, JXNP ADDR,i
if (x<0 / x==0 / x>0) then goto ADDR + rIi;
if (x>=0 / x!=0 / x<=0) then goto ADDR + rIi;
J?N, J?Z, J?P ADDR,i
J?NN, J?NZ, J?NP ADDR,i
if (rI?<0 / rI?==0 / rI?>0) then goto ADDR + rIi;
if (rI?>=0 / rI?!=0 / rI?<=0) then goto ADDR + rIi;
MOVE ADDR,i(F) for (n=1; n<=F; n++, rI1++)
   memory[ADDR + rIi + n] := memory[rI1];
SLA, SRA ADDR,i
SLAX, SRAX ADDR,i
SLC, SRC ADDR,i
a を左(L)/右(R)に ADDR+rIi バイトだけシフト
ax を左(L)/右(R)に ADDR+rIi バイトだけシフト
ax を左(L)/右(R)に ADDR+rIi バイトだけローテート
NOP 何もしない;
HLT 実行停止;
IN ADDR,i(F) 入力装置 F から1ブロック読み取り
memory[ADDR + rIi] を始点として格納;
OUT ADDR,i(F) 出力装置 F に memory[ADDR + rIi]
を始点として1ブロックを書き込み;
IOC ADDR,i(F) 入出力装置 F に制御命令を送る;
JRED ADDR,i(F) if (入出力装置 F はレディ状態) then goto ADDR + rIi;
JBUS ADDR,i(F) if (入出力装置 F はビジー状態) then goto ADDR + rIi;
NUM rA := (rA,rX) にある文字列を数値化した値;
CHAR (rA,rX) := rA の内容を数値として文字列(文字コード)で表したもの;

MIX

[]



(一)^ 19601964System/360

(二)^ 使

(三)^ System/360IBM 650IBM 709IBM 7070U3SS80en:UNIVAC Solid State80UNIVAC 1107en:UNIVAC 1100/2200 seriesen:CDC 1604en:Bendix G-20B220Datatron 220en:Philco Transac S-2000SDS 920en:SDS 9 Series601Minivac 601RCA 601en:Honeywell 800PDP-4IIen:UNIVAC II 

[]


MMIX 2009: A RISC Computer for the Third Millennium MIX

MMIX News MIX

MMIXware: A RISC Computer for the Third Millennium MIX

Open Directory: Computers: Programming: Languages: Assembly: MIX-MMIX MIX-MMIX/MIXAL-MMIXAL