System Programming
-
Bomb Lab Walkthrough - 1System Programming/Bomb Lab 2019. 10. 4. 22:44
시프의 X같은 과제 그 세 번째(1번째 과제는 이중연결리스트였는데, 포인터 위치 하나를 착각해서 며칠 동안 삽질을 했다.)-CS:APP에서는 이중연결리스트를 빼서 두 번째이다. 시험 족보에 Bomblab 관련 문제가 나와서 과정을 정리해 보는 것이 큰 도움이 될 것이다. 우선 Bomblab은 이름이 좋아 폭탄이지, 사실 디버깅과 역어셈블러를 공부하는 것이다. 총 6단계로, 각 단계마다 적절한 값을 넣어주면 다음 단계로 이동한다. 실패한다면? 점수도 폭8해 버린다. 그럼 폭탄랩을 시작해 보자. 그나저나 Dr. Evil이 누구일까? 꺼라위키를 찾아보자. Dr. Evil 오스틴 파워스의 숙적이자 세계를 위협하는 존재이다. 머리가 좋아서 용암 내부에 기지, 냉동 기계 심지어는 타임 머신도 만들어냈다. 덤으로 성..
-
조건 코드System Programming 2019. 10. 2. 02:25
조건 코드 CPU에는 조건 코드라고 불리는 단일 비트 레지스터가 존재한다. 이들은 분기를 표기하는 데 이용한다. 이 4개의 코드들은 최근 연산에 대해 다음의 정보를 저장한다. CF Carry Flag MSB에서 받아올림이 생겼는가?=Unsigned에서 오버플로우가 발생하였는가? ZF Zero Flag 결과가 0인가? SF Sign Flag 결과가 음수인가? OF Overflow Flag Signed 연산에서 양수/음수의 2의 보수 오버플로가 발생하였는가? (주의: leaq는 주소에 관련된 명령어이므로 이 코드들을 변경시키지 않음.) 조건 코드만을 변경시키는 명령어도 존재한다. 각각 cmpq, testq로, 뒤의 값-앞의 값과 뒤의 값&앞의 값을 리턴한다. 하단의 표는 각 명령어가 조건 코드를 언제 변경시..
-
프로그램 작동의 기초System Programming 2019. 10. 1. 22:16
CPU 프로그램은 본질적으로 CPU에게 이래라저래라 시키는 것이다. 이것들 중 우리가 건드릴 수 있는 것은 이하와 같다. 프로그램 카운터(PC): 컴퓨터 아님. %rip로 표기하며, 다음 인스트럭션의 메모리 주소를 담고 있다. 정수 레지스터 파일: 64비트 값을 저장하기 위한 16개의 이름을 붙인 위치를 가지고 있다. 이들이 저장하는 것은 포인터나 정수. 조건 코드 레지스터: 가장 최근에 실행한 산술/논리 인스트럭션 정보 저장. if/while 등 실행에 이용되는 곳이다. 벡터 레지스터: 이들의 집합이 정수/float를 저장한다. 어셈블리어 고급 언어 그 자체는 컴퓨터가 이해 불가능. 그래서 기계어로 바꿔야 하는데, 이 과정은 한 번 만에 이루어지는 것이 아니라, 여러 번에 걸쳐 이루어진다. 우선적으로는..
-
부동 소수점 표현System Programming 2019. 9. 22. 03:10
부동 소수점 부동은 不動이 아닌, 浮動-즉 떠서 움직인다는 뜻이다. 원어는 Floating point인데, floating을 번역하다 보니 이렇게 된 것이다. 소수점의 위치가 수에 따라 달라진다. 부동 소수점의 원리는 과학적 기수법의 그것과 흡사하다. 수를 \(x\times 2^y\) 형태로 나타내는 것이 근간이 된다. 즉 과학적 기수법의 2진법에서의 형태라 생각하면 좋다. 실질적으로 이용되는 IEEE 표준은 $$(-1)^sM2^2$$ 형태로 수를 나타낸다. 각각의 수가 의미하는 것은... s는 sign bit다. 양수는 0, 음수는 1이다. M은 [1.0, 2.0) 사이의 비율 이진수, 즉 유효숫자이다. 십진법에서 유효숫자는 [1.0, 10.0)이란 걸 생각하면 쉽다. E는 2의 지수. 당연히 음수도 ..
-
수 표기 1편System Programming 2019. 9. 11. 01:00
비트와 바이트 비트는 0 또는 1로 나타내는 정보의 최소단위이며, 비트 8개를 하나로 묶어서 1바이트로 취급한다. 비트 8개이므로 \(2^8\)=256가지의 정보를 표현할 수 있으며, 이 때문에 십진수로는 0부터 255, 십육진수로는 00부터 FF까지로 표기된다. 부울(불) 대수 불 대수는 불이 붙은 물건의 상태를 서술하는 것이다. -백괴사전- ...농담이고, 실제로는 참/거짓을 나타내는 것이다. 참은 1, 거짓은 0으로 나타내며, 이를 이용한 논리 연산을 불 연산이라 한다. 불 대수의 기본적인 연산은 총 4가지로, &, |, ~, ^이다. &는 논리곱으로, p와 q가 1이어야만 1을 return한다. & 0 1 0 0 0 1 0 1 |는 논리합으로, p와 q 중 1이 있으면 1을 return한다. | ..