공부 일지
CS:APP 3장 Machine Level Reprentation of Programs
dev_doyle
2018. 7. 9. 01:34
컴퓨터 시스템이라고 국내에 번역된 Computer System : A Programmer's Perspective의 3장 내용을 드디어 다 읽었다.
3장은 C언어와 x86-64 어셈블리간의 관계를 탐구하면서 주로 어셈블리어의 명령어와 이를 통한 약간의 최적화를 다룬다. 지금까지 C++이나 파이썬만 써왔기에 레지스터에 직접 값을 할당하고 연산하는 어셈블리에 익숙하는데 꽤 시간이 걸렸고 사실 아직도 연습문제를 풀려면 책을 앞 뒤로 왔다 갔다 해야 하지만(책이 2장에 비해 3장이 훨씬 너덜너덜하다..) 추상화된 언어로 쓰여진 코드를 실제로 컴파일러는 어떤 방식으로 기계어와 유사한 어셈블리어로 바꿔주는 지에 대해 알아 볼 수 있다. 또한 %rsp; 스택포인터를 소개하면서 프로그램의 절차에 대해서도 배울 수 있다. 비전공자인 나는 항상 컴퓨터의 동작에 대해서는 아무런 지식이 없었는데 CS:APP를 보면서 type과 메모리, 그리고 컴퓨터 시스템에 대해서 자세히 알 수 있는 기회가 됬다.
구글에 CSAPP를 검색하면 인강도 찾아 볼 순있는데.. 어짜피 책을 읽어야 할 것 같아서 책만 읽으나, 강의도 보고 책도 읽으나 그게 그거 인 것 같다.. 책 설명이 워낙 친절해서 진도가 느릴 뿐이지 애매하진 않다. 3장을 다 읽었으니 이제 Bomb-lab을 해야지!