!!!TINYCPUの命令セット , ,ニーモニック,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16進,動作 ,1,HALT,0,0,0,0,-,-,-,-,-,-,-,-,-,-,-,0000,停止 ,2,PUSHI I,0,0,0,1,I,I,I,I,I,I,I,I,I,I,I,1000+I,即値Iをスタックにプッシュ ,3,PUSH A,0,0,1,0,A,A,A,A,A,A,A,A,A,A,A,2000+A,A番地の値をスタックにプッシュ ,4,POP A,0,0,1,1,A,A,A,A,A,A,A,A,A,A,A,3000+A,スタックトップをA番地に格納 ,5,JMP A,0,1,0,0,A,A,A,A,A,A,A,A,A,A,A,4000+A,A番地に分岐 ,6,JZ A,0,1,0,1,A,A,A,A,A,A,A,A,A,A,A,5000+A,スタックトップが0ならA番地に分岐 ,7,JNZ A,0,1,1,0,A,A,A,A,A,A,A,A,A,A,A,6000+A,スタックトップが0でないならA番地に分岐 ,8,IN,1,1,0,1,-,-,-,-,-,-,-,-,-,-,-,D000,入力ポートの値をスタックにプッシュ ,9,OUT,1,1,1,0,-,-,-,-,-,-,-,-,-,-,-,E000,スタックトップを出力バッファに書き込み ,10,OP f,1,1,1,1,-,-,-,-,-,-,f,f,f,f,f,F000+f,スタック上で演算を行い,結果をスタックトップに格納 , ,ADD,1,1,1,1,-,-,-,-,-,-,0,0,0,0,0,F000,加算 , ,SUB,1,1,1,1,-,-,-,-,-,-,0,0,0,0,1,F001,減算 , ,MUL,1,1,1,1,-,-,-,-,-,-,0,0,0,1,0,F002,乗算 , ,SHL,1,1,1,1,-,-,-,-,-,-,0,0,0,1,1,F003,左シフト , ,SHR,1,1,1,1,-,-,-,-,-,-,0,0,1,0,0,F004,右シフト , ,BAND,1,1,1,1,-,-,-,-,-,-,0,0,1,0,1,F005,ビット毎の論理積 , ,BOR,1,1,1,1,-,-,-,-,-,-,0,0,1,1,0,F006,ビット毎の論理和 , ,BXOR,1,1,1,1,-,-,-,-,-,-,0,0,1,1,1,F007,ビット毎の排他的論理和 , ,AND,1,1,1,1,-,-,-,-,-,-,0,1,0,0,0,F008,論理積 , ,OR,1,1,1,1,-,-,-,-,-,-,0,1,0,0,1,F009,論理和 , ,EQ,1,1,1,1,-,-,-,-,-,-,0,1,0,1,0,F00A,等しい , ,NE,1,1,1,1,-,-,-,-,-,-,0,1,0,1,1,F00B,等しくない , ,GE,1,1,1,1,-,-,-,-,-,-,0,1,1,0,0,F00C,大きいか等しい , ,LE,1,1,1,1,-,-,-,-,-,-,0,1,1,0,1,F00D,小さいか等しい , ,GT,1,1,1,1,-,-,-,-,-,-,0,1,1,1,0,F00E,大きい , ,LT,1,1,1,1,-,-,-,-,-,-,0,1,1,1,1,F00F,小さい , ,NEG,1,1,1,1,-,-,-,-,-,-,1,0,0,0,0,F010,符号反転 , ,BNOT,1,1,1,1,-,-,-,-,-,-,1,0,0,0,1,F011,ビット毎の反転 , ,NOT,1,1,1,1,-,-,-,-,-,-,1,0,0,1,0,F012,論理否定 !!オペランド PUSHI I(即値プッシュ)は,Iを12ビットの2の補数として扱い,16ビットに符号拡張した値をスタックにプッシュする. PUSH AなどのオペランドAはアドレスを意味し,12ビットの符号なし2進数として扱う.