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바이트를 반환하는 구조다. 바이트코드 학습에서 가장 기본적인 예시다.
EVM은 PC(program counter)를 0으로 설정하고 시작한다.
스택, 메모리, 스토리지 모두 비어 있는 상태이고, 트랜잭션에서 제공된 가스를 소유한 채로 실행이 개시된다.
0x60 → PUSH1[2]0x60 → PUSH1[2, 3]0x01 → ADD[5]0x60 → PUSH1[5, 0]0x52 → MSTORE[00~1f] = 0x00000000000000000000000000000000000000000000000000000000000000050x60 → PUSH1[32]0x60 → PUSH1[32, 0]0xf3 → RETURN0x0000000000000000000000000000000000000000000000000000000000000005여기서 실행이 종료된다.
EVM은 반환한 32바이트 값을 호출자에게 전달한다.
한마디로 요약하면, EVM은 “스택 계산 → 메모리 저장 → 범위 반환”이라는 단순한 논리의 반복이다.
언뜻 단순하지만, 복잡한 스마트 계약도 이 원리 위에서만 움직인다.