본문 바로가기

Layer7/WriteUp

나만의 vm C언어로 구현하기

#include <stdio.h>

int value = 0;
int memory = 0;

void input() {
    printf("값을 입력하세요: ");
    scanf("%d", &value);
}

void output() {
    printf("입력된 값: %d\n", value);
}

void calc() {
    value += 5;
    printf("계산 후 값: %d\n", value);
}

void store() {
    memory = value;
    printf("값이 저장되었습니다: %d\n", memory);
}

void load() {
    value = memory;
    printf("불러온 값: %d\n", value);
}

void loop() {
    for (int i = 0; i < 3; i++) {
        calc();
    }
}

void check() {
    if (value > 0) {
        printf("값이 양수입니다.\n");
    } else if (value < 0) {
        printf("값이 음수입니다.\n");
    } else {
        printf("값이 0입니다.\n");
    }
}

int main() {
    char prog[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
    int option;

    while (1) {
        printf("옵션을 입력하세요: ");
        scanf("%d", &option);

        if (option == 0) {
            break;
        } else if (option >= 1 && option <= 7) {
            switch (prog[option - 1]) {
                case 0x01:
                    input();
                    break;
                case 0x02:
                    output();
                    break;
                case 0x03:
                    calc();
                    break;
                case 0x04:
                    store();
                    break;
                case 0x05:
                    load();
                    break;
                case 0x06:
                    loop();
                    break;
                case 0x07:
                    check();
                    break;
                default:
                    break;
            }
        } else {
            printf("잘못된 옵션입니다: %d\n", option);
        }
    }

    return 0;
}

'Layer7 > WriteUp' 카테고리의 다른 글

ARP 정리  (0) 2024.07.26
DNS 정리  (0) 2024.07.26
z3-solver 사용법 정리  (0) 2024.07.16
어셈블리어 strlen, strcpy, strcmp 세줄요약  (0) 2024.06.26
어셈블리어로 별찍기  (0) 2024.06.26