GoWoong의 개발 블로그
close
프로필 배경
프로필 로고

GoWoong의 개발 블로그

  • 분류 전체보기 (149)
    • 크래프톤 정글 (62)
    • 크래프톤 정글 (컴퓨터 시스템: CSAPP) (57)
      • 3장 프로그램의 기계수준 표현 (16)
      • 6장 메모리 계층구조 (6)
      • 7장 링커 (6)
      • 8장 예외적 제어 흐름 (7)
      • 9장 가상 메모리 (16)
      • 11장 네트워크 프로그래밍 (6)
    • 클라우드 (4)
      • [AWS] AWS IoT Core (4)
      • DevOps (0)
    • Deep Dive (16)
      • CS (15)
    • 백엔드 개발 (0)
      • 파이썬 (0)
      • 자바 스프링 (0)
    • 자격증 공부 (5)
      • AWS Cloud Practitioner (2)
      • 정보처리기사 (1)
      • AWS SAA-C03 (2)
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
  • 홈
  • 글쓰기

컴퓨터 시스템 : CSAPP 3장 정리 - 3.8 배열의 할당과 접근 Part.2

🔍 지금까지의 요약더보기🔹 3.8 도입: 배열과 주소 계산C 언어에서 배열은 연속적인 메모리 공간에 할당됨.배열 이름은 배열 시작 주소(포인터)처럼 동작.A[i]는 실제로 *(A + i)로 처리되며, 주소 계산은 xA + L*i로 단순화됨.이 단순한 구조는 어셈블리 주소 계산 명령어(D(Rb, Ri, S))와 자연스럽게 매핑됨.🔹 3.8.1 기본 원리 (Basic Principles)T A[N] 형태의 배열은 총 N * L 바이트를 연속적으로 할당.각 배열 요소 A[i]의 주소는 xA + i * L로 계산됨.배열 인덱싱은 어셈블리에서 스케일 인덱스를 활용한 주소 계산으로 구현됨 (예: movl (%rdx,%rcx,4), %eax).🔹 3.8.2 포인터 연산 (Pointer Arithmetic)포인..

  • format_list_bulleted 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
  • · 2025. 4. 6.
  • textsms
컴퓨터 시스템 : CSAPP 3장 정리 - 3.8 배열의 할당과 접근 Part.1

컴퓨터 시스템 : CSAPP 3장 정리 - 3.8 배열의 할당과 접근 Part.1

3.8 배열의 할당과 접근(Array Allocation and Access)이 절은 배열이 메모리에 어떻게 배치되고 접근되는지, 그리고 어셈블리 코드로 어떻게 변환되는지를 중점적으로 설명한다. 배열은 C 언어에서 스칼라 데이터를 모아 하나의 집합적인 자료형으로 만들 수 있는 수단이다. C는 배열을 아주 단순한 방식으로 구현하며, 이를 통해 기계어로의 변환도 간단해지는 장점이 있다.🔷 3.8.1 배열의 기본 원리 (Basic Principles)📌 핵심 아이디어배열은 C 언어에서 메모리를 연속적으로 할당받는 자료구조이다. 컴파일러가 배열을 다룰 때는 포인터 + 오프셋 방식으로 매우 단순하게 처리한다.배열은 포인터처럼 행동하지만, 실제로는 정적 메모리 블록을 가리키는 기준 주소(base address)..

  • format_list_bulleted 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
  • · 2025. 4. 6.
  • textsms
컴퓨터 시스템 : CSAPP 3장 정리 - 3.7 프로시저 Part.2

컴퓨터 시스템 : CSAPP 3장 정리 - 3.7 프로시저 Part.2

🔍 지금까지의 요약3.7 프로시저 도입: 프로시저는 제어 이동, 데이터 전달, 메모리 관리 등 세 가지 핵심 역할을 담당함.3.7.1 런타임 스택: 각 함수 호출 시 스택 프레임이 생성되며, 복귀 주소와 로컬 변수, 보존 레지스터 등을 저장.3.7.2 제어의 이동: call 명령어로 제어를 이동하고 ret 명령어로 원래 위치로 복귀. 복귀 주소는 스택에 저장됨.3.7.3 데이터 전송: 최대 6개의 인자는 레지스터로 전달되고, 초과분은 스택을 사용. 반환값은 %rax를 통해 전달됨.3.7.4 로컬 저장소(Local Storage on the Stack)지금까지 본 대부분의 프로시저 예제들은 로컬 저장소가 따로 필요하지 않았고, 모든 데이터가 레지스터만으로 처리될 수 있었다. 하지만 다음과 같은 경우에는 ..

  • format_list_bulleted 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
  • · 2025. 4. 6.
  • textsms
컴퓨터 시스템 : CSAPP 3장 정리 - 3.7 프로시저 Part.1

컴퓨터 시스템 : CSAPP 3장 정리 - 3.7 프로시저 Part.1

🌟 3.7장: 프로시저란 무엇인가?프로시저는 컴퓨터 프로그램에서 어떤 일을 "묶어서" 해주는 작은 기계 같은 것이다. 예를 들어, "사과 3개를 깎는 방법"을 한 번에 설명할 수 있으면, 그걸 다른 날에도 똑같이 쓸 수 있을 것이다. 그게 바로 프로시저다.💡 왜 좋은가?여러 번 같은 일을 하지 않도록 함.복잡한 내용을 숨기고, "무엇을 하는지"만 쉽게 보여줄 수 있음.예시로, 엄마가 "아침에 학교 갈 준비 해!"라고 할 때, 학교 갈 준비 안에는세수하기옷 갈아입기가방 챙기기밥 먹기등이 포함되어 있을 것인데 이렇게 많은 일을 하나의 명령으로 묶은 게 바로 프로시저다.프로시저는 소프트웨어에서 핵심적인 추상화(abstraction) 개념이다. 특정 기능을 수행하는 코드를 인수들과 함께 하나의 단위로 묶어놓..

  • format_list_bulleted 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
  • · 2025. 4. 6.
  • textsms

컴퓨터 시스템 : CSAPP 3장 정리 - 3.6 장 제어문 Part.2

3.6.5 - 조건부 분기를 조건 제어로 구현하기 (Implementing Conditional Branches with Conditional Control)🎯 조건부 분기를 조건 제어로 구현한다는 건?우리 눈에 보이는 C 코드에서는 if, else 같은 조건문이 있다. 컴퓨터는 이걸 어셈블리 코드에서 점프(jump) 명령어를 써서 구현한다.👨‍🏫 예시 C 코드long absdiff_se(long x, long y) { if (x 여기서 lt_cnt랑 ge_cnt는 "x가 y보다 작을 때"와 "크거나 같을 때"를 센다는 의미다.🧱 이걸 어셈블리로 바꾸면?컴파일러는 이렇게 바꾼다.cmpq %rsi, %rdi ; x = y면 .L2로 점프addq $1, lt_cnt(%rip); lt_c..

  • format_list_bulleted 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
  • · 2025. 4. 5.
  • textsms

컴퓨터 시스템 : CSAPP 3장 정리 - 3.6 장 제어문 Part.1

📘 3장 6절 도입부: "제어(컨트롤)"우리가 컴퓨터한테 “이거 해!” 하고 명령을 내릴 때, 컴퓨터는 순서대로 차례차례 그 명령들을 따라 한다. 그런데 어떤 때는 "만약 이 조건이 맞으면 이걸 하고, 아니면 저걸 해!"라고 조건을 걸 수도 있다. 마치 게임에서 “보스를 이기면 다음 스테이지로 가고, 아니면 다시 도전하기” 같은 것이다.이렇게 "조건에 따라 행동을 다르게 하기"를 제어 흐름(control flow)이라고 한다. 그리고 컴퓨터는 점프(jump)라는 특별한 명령을 써서 이 흐름을 바꾼다. “여기서 저기로 점프!”라고 말이다.🧠 3.6.1절 - 조건 코드 (Condition Codes): 컴퓨터가 생각하는 방법컴퓨터는 계산을 한 다음, 그 결과에 대해서 “이건 0인가?”, “음수인가?”, ..

  • format_list_bulleted 크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현
  • · 2025. 4. 5.
  • textsms
  • navigate_before
  • 1
  • ···
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • ···
  • 25
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (149)
    • 크래프톤 정글 (62)
    • 크래프톤 정글 (컴퓨터 시스템: CSAPP) (57)
      • 3장 프로그램의 기계수준 표현 (16)
      • 6장 메모리 계층구조 (6)
      • 7장 링커 (6)
      • 8장 예외적 제어 흐름 (7)
      • 9장 가상 메모리 (16)
      • 11장 네트워크 프로그래밍 (6)
    • 클라우드 (4)
      • [AWS] AWS IoT Core (4)
      • DevOps (0)
    • Deep Dive (16)
      • CS (15)
    • 백엔드 개발 (0)
      • 파이썬 (0)
      • 자바 스프링 (0)
    • 자격증 공부 (5)
      • AWS Cloud Practitioner (2)
      • 정보처리기사 (1)
      • AWS SAA-C03 (2)
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
최근 글
인기 글
최근 댓글
태그
  • #AWS
  • #AWSKRUG
  • #saa-c03
  • #Cloud Practitioner
  • #serverless
  • #IOT
  • #CLF-C01
  • #AWS Community Day
  • #AWS 자격증
  • #aws #iot
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바