operand 갯수
- 3 operand

- add a, b, c
- 결과: a
- 소스: b, c
- a <- b+c
- 일반적으로 연산한 결과를 왼쪽에 놈


-
2 operand

- add a, b
- a <- a+b
- operand 2개인 경우는 하나가 결과임
- 명령어
- mov z a: z <- a
-
1 operand

- add a
- 결과: ac
- 소스: a, ac
- ac <- a+ac
- ac(accumulator)가 값을 hold
- operand가 하나인 경우 임시변수 역할 감당
- ld(mov) a
- 결과: ac
- 소스: a
- ac <- a
- movr(st) z
- z <- ac
-
0 operand

- 스택에서 사용하는 명령어
- 스택 opcode
- push a(피연산자x, a는 연산임 --> 0 operand)
- push b
- add(tos <- a+b)
- push c
- div(a+b/c)
- pop z(z <- tos)
-
유의점
- 단순히 operand가 적어서 비트가 짧은 것이 더 유용함을 의미하지는 않음
- 더 짧은 비트가 더 많은 명령의 줄을 요구할 수 있음
- 비트와 명령이 가장 적을 수 있는 방법을 모색하는 것이 중요