컴퓨터 시스템 : CSAPP 3장 정리 - 3.2장 프로그램의 인코딩 Part. 2
🧪 3.2.2 Code Examples — 코드 예제💡 C 코드로 함수 만들기먼저 아래와 같은 C 코드를 가정해 보자. 파일 이름은 mstore.c라고 한다.long mult2(long, long);void multstore(long x, long y, long *dest) { long t = mult2(x, y); *dest = t;}이 함수는 x와 y를 mult2 함수에 넘겨서 곱한 결과를 dest가 가리키는 곳에 저장한다.🛠️ 어셈블리 코드로 보기이 C 코드를 어셈블리로 바꾸려면 이렇게 명령어를 입력한다:gcc -Og -S mstore.cmultstore: pushq %rbx ; %rbx 저장 (함수 호출 시 보존해야 함) movq %rdx, %rbx ..
- 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
- · 2025. 4. 5.
컴퓨터 시스템 : CSAPP 3장 정리 - 3.2장 프로그램의 인코딩 Part. 1
🧠 핵심 질문: 우리가 만든 프로그램은 컴퓨터에게 어떻게 전달될까?우리가 C 같은 언어로 프로그램을 짜면, 그 코드는 컴퓨터가 직접 이해할 수 없다. 컴퓨터는 오직 기계어라는 아주 특별한 형태의 언어만 이해한다. 그래서 우리가 만든 코드는 컴퓨터가 이해할 수 있는 모양으로 인코딩(Encoding) 되어야 한다.이 인코딩은 기계 수준 코드(Machine-Level Code)라고 부르며, 그 과정을 거치면 컴퓨터가 그 프로그램을 메모리에 올리고, 실행할 수 있게 된다.🏗️ 컴퓨터가 프로그램을 실행할 준비를 하는 과정컴퓨터는 다음과 같은 과정으로 우리가 만든 코드를 처리한다:컴파일러가 C 코드 같은 고급 언어를 받아서 어셈블리 코드라는 저수준 언어로 바꿔준다.어셈블러가 이 어셈블리 코드를 읽어서 기계가 이..
- 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
- · 2025. 4. 5.
컴퓨터 시스템 : CSAPP 3장 정리 - 3.1장 역사적 배경
이 부분은 우리가 지금 사용하는 컴퓨터가 어떻게 발전해왔는지를 이야기하는 “컴퓨터 역사 이야기”라고 생각하면 된다. 🧠 쉬운 설명으로 각 CPU 살펴보기🧱 8086: 아주 기본적인 벽돌 컴퓨터8086 (1978년)→ 첫 번째 16비트 마이크로프로세서. 계산도 느리고 메모리도 작았다.→ IBM 컴퓨터에 들어가서 MS-DOS와 함께 사용되었다.계산은 느리고 단순함16비트 숫자만 다룸 (0~65,535까지만 가능)요즘 계산기보다 느릴 수 있다.🚪 80286: 문이 더 생긴 컴퓨터80286 (1982년)→ 더 많은 주소를 다룰 수 있게 되었으며. 윈도우가 돌아가던 초기 PC에 들어갔다.주소 공간을 확장했으며. 더 많은 데이터를 기억 가능했다."보호 모드" 덕분에 프로그램 충돌 방지 가능 (안전한 방)🛣️..
- 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
- · 2025. 4. 5.