0x01 문자열 입력
0x02 문자열 출력
0x03 스택 할당
0x04 스택 push
0x05 스택 pop
0x06 더하기
0x07 빼기
0x08 프로그램 종료
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char prog[] = {0x01, 0x05, 0x02, 0x06, 0x03, 0x07, 0x08};
int main() {
int a, b;
int stack[1000], stack_ptr = 0;
char str[1000];
for (int i = 0; i < sizeof(prog); i++) {
int opcode = prog[i];
switch(opcode) {
case 0x01: // 문자열 입력
printf("입력 : ");
scanf("%s", str);
break;
case 0x02: // 문자열 출력
printf("출력 : %s\\n", str);
break;
case 0x03: // 스택 할당
if (stack_ptr < 1000) {
stack[stack_ptr++] = 1; // 스택 배열에 1 저장 할당
} else {
printf("Stack overflow\\n");
}
break;
case 0x04: // 스택 pop
if (stack_ptr > 0) {
stack_ptr--;
} else {
printf("Stack underflow\\n");
}
break;
case 0x05: // 스택 push
if (stack_ptr < 1000) {
stack[stack_ptr++] = 1; // 스택 배열에 1 저장 할당
} else {
printf("Stack overflow\\n");
}
break;
case 0x06: // 더하기
printf("A : ");
scanf("%d", &a);
printf("B : ");
scanf("%d", &b);
printf("결과 : %d\\n", a + b);
break;
case 0x07: // 빼기
printf("A : ");
scanf("%d", &a);
printf("B : ");
scanf("%d", &b);
printf("결과 : %d\\n", a - b);
break;
case 0x08: // 프로그램 종료
exit(0);
default:
printf("Invalid opcode: %x\\n", opcode);
}
}
return 0;
}