#include <stdio.h>

int	reg[ 4 ] ;
int	mem[ 100 ] ;

// レジスタマシンで使える機械語
#define	LD(R0,R1)	reg[R0]=reg[R1]
#define	LD_I(R,VAL)	reg[R]=VAL
#define	LD_M(R,ADR)	reg[R]=mem[ADR]
#define ST_M(ADR,R)	mem[ADR]=reg[R]

#define	ADD(R0,R1)	reg[R0]+=reg[R1]
#define	ADD_I(R,VAL)	reg[R]+=VAL
#define ADD_M(R,ADR)	reg[R]+=mem[ADR]
#define	SUB(R0,R1)	reg[R0]-=reg[R1]
#define	SUB_I(R,VAL)	reg[R]-=VAL
#define SUB_M(R,ADR)	reg[R]-=mem[ADR]
#define	MUL(R0,R1)	reg[R0]*=reg[R1]
#define	MUL_I(R,VAL)	reg[R]*=VAL
#define MUL_M(R,ADR)	reg[R]*=mem[ADR]
#define	DIV(R0,R1)	reg[R0]/=reg[R1]
#define	DIV_I(R,VAL)	reg[R]/=VAL
#define DIV_M(R,ADR)	reg[R]/=mem[ADR]

#define DC(ADR,VAL)	mem[ADR]=VAL

#define OUT(R)		printf( "%d\n" , reg[R] )

#define	R0	0
#define	R1	1

int main() {
	#include "reg-machine.h"
	return 0 ;
}
