Stack Frame

Stack Frame Stack Frame은 함수의 호출 정보들을 저장하기 위한 자료구조이다. 이러한 Stack Frame에는 함수에 필요한 인자, 지역 변수, return address와 같은 정보들이 들어있다. 함수를 호출(call)하게 되면 기존 레지스터에 있던 정보들을...

[번역]main 함수 없이 Hello World 출력하기

이 글은 Executing main() in C/C++ – behind the scene을 번역한 글입니다. main 함수 없이 Hello World 출력하기 어떻게 main 함수 없이 “Hello world”를 출력할 수 있을까? 먼저, main 함수가...

VM Translator

VM Translator - 1 가상 머신 패러다임 컴파일 과정은 상당히 복잡한 프로세스다. 보통 고수준 언어를 대상 기계어로 번역하려면 별도의 컴파일러를 따로 만들어야한다. 따라서 언어와 기계어의 특성에 따라 수많은 컴파일러가 생겨나게...

어셈블러

어셈블러 기호 변환(Symbol Resolution) 기호가 있는 코드를 기호가 없는 코드로 변환하는 방법에는 기호 테이블(Symbol Table)이 있다. 우선, 번역된 코드는 주소 0부터 시작하는 메모리에 저장하고, 변수들은 주소 1024부터 할당하도록 한다(이 규칙은...

CPU와 메모리 만들기

CPU와 메모리 만들기 CPU 우리가 만들 컴퓨터 아키텍처에서 PC칩의 출력에서 나온 선은 ROM 칩의 주소 입력에 연결된다. 여기서 ROM 칩은 PC가 가리키는 명령어 메모리 위치의 값인 ROM[PC]을 계속 출력한다. 이...

컴퓨터 구조

컴퓨터 구조 내장식 프로그램 컴퓨터의 유연성은 내장식 프로그램(Stored Program)이라는 개념에서 비롯한다. 기본적인 아이디어는 컴퓨터는 정해진 명령어 집합들을 실행하는 고정된 하드웨어 플랫폼이라는 아이디어에 기반한다. 동시에 컴퓨터가 실행하는 명령어들은 기본 블록이 되어...

메모리와 명령어

메모리와 명령어 메모리 주소 공간 폰 노이만 구조에서는 주소 공간이 명령어 메모리(Instruction Memory)와 데이터 메모리(Data Memory)라는 두 부분으로 분리되어 있다. 또한 주소 공간의 크기는 CPU의 주소 버스의 크기에 따라 정해진다....

기계어와 어셈블리

기계어와 어셈블리 Terms 기계어(Machine Language) : 프로세서와 레지스터들을 이용해서 메모리를 조작할 수 있도록 미리 정의된 규칙 어셈블리(Assembly) : 기계어와 일대일 대응이 되는 저급 프로그래밍 언어. 2진 코드는 사람이 읽기 어려워서...

레지스터와 카운터 만들기

레지스터와 카운터 만들기 Background 앞에서 만든 불 논리 칩과 산술 칩들은 모두 조합 칩(conbinational chip), 즉 입력 값의 조합에만 의존하는 함수를 계산한다.하지만 컴퓨터는 값을 저장하고 다시 불러올 수 있어야 함....

ALU(Arithmetic Logic Unit) 만들기

ALU(Arithmetic Logic Unit) 만들기 가산기(Adder) 이 세 개의 가산기 칩들은 나중에 멀티비트 가산기 칩으로 이어진다. 반가산기(Half-Adder): 두 비트를 더함 전가산기(Full-Adder): 세 비트를 더함 가산기(Adder): 두 개의 n비트 숫자를 더함 Half-Adder...