register 2

[컴파일러 이론] 12. register allocation

register와 memoryCPU에서 어떤 값들을 저장하는 용도로 register와 memory가 있다.컴퓨터 구조론에서도 나오는 내용이지만 간단히 정리해보자. 먼저 CPU에서 연산을 할 때는 register의 내용을 사용한다.따라서 memory에 있는 내용은 먼저 register로 올린 후에 연산이 가능하다. memory 보다 register가 훨씬 빠른데, 대신 그만큼 용량은 적다.register allocation이전 글에서 IR에 대해 잠시 얘기했었다. 이때 기본적으로 깔려있는 가정이 있는데,"IR은 무한한 register를 가지고 있다" 그러나 실제로는 당연히 register의 개수에 8~16개 정도로 제한이 있는데, 이 글에서는 이것과 관련해 알아보자. 우리가 이론적으로 다뤘던 registe..

CS/컴파일러 2026.01.04

[컴파일러 이론] 9. Code Generation - Stack Machine

아래처럼 간단한 코드는 어셈블리 코드로 바꾸기 쉬울 것이다.하지만 함수 호출등 코드가 복잡해지면 어려워진다.Stack Machine위의 어려움을 조금 해소해주기 위해 만들어진 방법이 stack machine이다.일단 모든 데이터가 스택에 저장되어있다고 가정하고 진행해보자.이 가정이 없는 경우에 대해서는 바로 이어서 다룰 것이다. stack machine은 n개의 피연산자를 스택에서 pop하고 이 값들을 이용해 operation(명령어)를 계산한다.그 이후 그 결과를 다시 스택에 push한다. 간단한 설명이지만 약간 추상적이므로 예시를 보고 확실히 이해를 해보자.아래 예시는 7+5를 계산하는 예시이다.2번의 load(pop), 1번의 store(push)로 계산할 수 있다.그러나 덧셈 한번에 3번의 메모리..

CS/컴파일러 2025.12.29