0x60 02      // PUSH1 0x02
0x60 03      // PUSH1 0x03
0x01         // ADD
0x60 00      // PUSH1 0x00
0x52         // MSTORE
0x60 20      // PUSH1 0x20
0x60 00      // PUSH1 0x00
0xf3         // RETURN

이 코드는 “2 + 3 = 5” 계산 후, 그 결과(5)를 메모리 0x00 위치에 저장하고 32바이트를 반환하는 구조다. 바이트코드 학습에서 가장 기본적인 예시다.


1단계: 프로그램 카운터 초기화

EVM은 PC(program counter)를 0으로 설정하고 시작한다.
스택, 메모리, 스토리지 모두 비어 있는 상태이고, 트랜잭션에서 제공된 가스를 소유한 채로 실행이 개시된다.


2단계: PUSH1 0x02 (0x60 02)


3단계: PUSH1 0x03 (0x60 03)


4단계: ADD (0x01)


5단계: PUSH1 0x00 (0x60 00)


6단계: MSTORE (0x52)


7단계: PUSH1 0x20 (0x60 20)


8단계: PUSH1 0x00 (0x60 00)


9단계: RETURN (0xf3)

여기서 실행이 종료된다.
EVM은 반환한 32바이트 값을 호출자에게 전달한다.


이 예시가 의미하는 것

한마디로 요약하면, EVM은 “스택 계산 → 메모리 저장 → 범위 반환”이라는 단순한 논리의 반복이다.
언뜻 단순하지만, 복잡한 스마트 계약도 이 원리 위에서만 움직인다.