CSAPP(12)
-
[Week6 - CSAPP] 9.1 - 톰 킬번 없었으면 님들 사펑이랑 GTA5 못함 ㄹㅇ
톰 킬번, 레전드 컴퓨터 과학자인 이분이 없었다면 우리는 사펑이나 GTA5, 심지어 국민 게임인 롤 마저도 못할뻔 했다. 9장은 대 톰 킬번 선생님의 길이 남을 업적 중 하나인 가상메모리에 대해 알아보는 단원이다. 이번 9.1장은 주소에 관한 내용인데, 저어어어어어어어어번에 다룬 3.2장에 사실 이미 가상 주소와 프로그램 메모리에 대해 다룬적이 있다.(이 글이다. 한 번만 읽어주면 너무 고맙겠다.→ https://kgr0831.tistory.com/30) 이번 9.1장은 이 주소에 대해, 정확히는 물리 주소와 가상 주소의 차이, 주소 체계에 대해 다룬다. 컴퓨터 시스템은 메모리에 접근할 때, 주소를 사용하여 해당 주소에 있는 데이터를 가져온다. 이 주소에는 물리 주소와 가상 주소가 있는데 이 2개를 ..
2025.10.22 -
[Week6 - CSAPP] 3.5 ~ 3.11 - 미안하다 요약할 시간이 없다.
ㅈㄱㄴ이다. 미안하지만 .1장을 요약할 때 마다 하루나 걸려서 너무 힘든 관계로 남은 3장은 GPT를 통해 요약했다. 이 못나고 게으르고 시간이 없는 필자를 용서해주면 좋겠다... 미안하다..... 요약은 Gpt 5 pro 모델에 프롬프트와 cs:app 3장 영문을 준 뒤에 했다. 3.5 산술과 논리 연산이 장에서는 플래그(조건 코드)를 처음 만난다.CPU는 연산을 할 때 결과를 저장할 뿐 아니라 “결과가 어떤 상태인지”도 플래그에 기록한다. 플래그의미ZF결과가 0인가?SF음수인가?CF자리올림(캐리) 발생?OF오버플로 발생?예를 들어, cmpq %rax, %rbx는 실제로는 %rbx - %rax를 계산하지만 결과는 버리고,그 대신 조건 코드만 설정한다.이 플래그는 곧 분기(jmp, je, jne, jl...
2025.10.20 -
[Week6 - CSAPP] 3.4 - 여친 만드는 법 : 어셈블리어 배우기
이제 CS:APP의 노잼 부분의 시작 부분인 3.4장이다. 이번 부분 부터는 어셈블리어의 구성에 대해 좀 더 깊게 다룬다. 하지만 이걸 읽는 당신이 어셈블리어를 마스터 한다면, 당신은 그것만으로도 천재 프로그래머이자, 알파메일 그자체인 기가차드 같은 프로그래머가 될 수 있다. 만약 누군가가 당신의 주 언어에 대해 물어봤다고 하자. 그 때 당신이 파..파이썬이요....(물론 파이썬은 너무 좋은 언어다. 그리고 생각보다 문법이 어렵다.) 하는 것 보다 어셈블리. https://www.youtube.com/watch?v=QJJYpsA5tv8 이러면 당신은 그 순간 애인이 생기게 된다. 그것도 코딩으로. 쩔지 않는가? 그럼 모두의 솔로 탈출을 기원하며 3.4장에 대해 설명해 보도록 하겠다. 3.4장은 데이..
2025.10.18 -
[Week5 - CSAPP] 3.3 - 데이터의 형식
이 절에서는 x86-64 시스템에서 사용되는 데이터 크기와 명칭을 다룬다. Intel 아키텍처에서 ‘워드(word)’는 특정 길이의 데이터를 가리키며, 이때 워드는 16비트를 의미한다. 이에 따라 16비트는 워드(word),32비트는 더블 워드(double word),64비트는 쿼드 워드(quad word)라고 부른다. 이러한 명칭은 단순한 정의를 넘어서 어셈블리 명령어의 접미사로도 쓰인다. 예를 들어 데이터 이동 명령어 mov는 다음과 같은 접미사를 가진다.movb ; 바이트(1B) 단위 이동movw ; 워드(2B, 16비트) 단위 이동movl ; 더블 워드(4B, 32비트) 단위 이동movq ; 쿼드 워드(8B, 64비트) 단위 이동 여기서 l이 ‘double’의 d가 아니라 ‘long’의 l인 이유..
2025.10.17 -
[Week3 - CSAPP] 3.2 - 프로그램의 인코딩
어.. 이번 부분은 좀 어렵기도 하고... 내용도 좀 많은 편이다. 그래서 이번부분은 솔직히 내가 개드립을 치기도 애매하고.. 쉽게 설명하기도 힘들다.(사실 쉬운것도 쉽게 설명을 못하긴 한다.) 이번 부분 부터는 조금씩 어셈블리어를 이해해야 하는 부분이 많다. 필자도 어셈블리어에 대한 이해가 없으나, 최대한 열심히는 써봤다. 본 글은 필자가 CS:APP의 3.2장을 읽고, 3.2장의 순서에 상관 없이 필자가 이해한대로 정리한 글이기에, 책의 내용이 뒤죽박죽 나오고 생략된 부분 또한 존재한다. 이를 염두해두고 본 글을 읽어주길 바란다. 3장은 전체적으로 프로그램이 기계 수준에서 어떻게 작동하는지에 대해 자세히 다룬 파트인데, 3.2장은 여기서 기계어의 내부 구조에 대해 크게 아래의 3가지를 다룬다. 기계어..
2025.10.01 -
[Week3 - CSAPP] 3.1 - 역사적 관점(근데 약간 이상한)
오늘은 조금은 진부하고, 지루할 수 있는 프로세서의 역사에 대해 다룬다. 여러 프로세서들 중에 오늘 다룰 것은 x86 아키텍처 기반의 intel사의 CPU들이다. 근데 솔직히 그냥 다루면 재미가 너무너무너무나도 없기에 만화 원피스에 약간 빗대서 표현해보려고 한다. 우선 위의 친구가 x86 프로세서의 시초인 8086이다. 이 프로세서는 루피의 고무고무 총이 단순 직선 펀치 기술인 것 처럼 단순하고 제한적이지만, 이 고무고무 총이 나중에 모든 루피의 기술들에 시초가 된 것처럼 8086 또한 x86 아키텍쳐를 사용하는 프로세서의 시초였다. 모두들 알고 있듯이, 루피는 고무고무 총을 응용해서 고무고무 총난타나 고무고무 바주카 같은 기술들을 만들어 냈다 intel 또한 8086을 발전시켜, 주소지정 모..
2025.09.19