CSAPP

Exceptional Control Flow제어 흐름처음 전원을 켤때부터 전원을 끄기까지, 프로그램 카운터는 일련의 값들을 순차적으로 가진다.순차적으로 명령을 실행하는 것을 제어 전달이라고 하며, 이러한 제어 전달의 연속은 프로세서의 제어 흐름이라고 한다(flow of control).예외 제어흐름가장 간단한 종류의 제어 흐름은 메모리에서 인접한 위치에 있는 연속된 명령을 수행하는 것이다.하지만 이런 흐름의 급격한 변화는 점프(jumps), 호출(calls), 반환(return)과 같은 익숙한 제어문으로 인해 발생한다.그러나 시스템은 내부 프로그램 변수로 포착되지 않는 시스템 상태의 변화에도 반응해야 하는데, 이는 프로그램의 정상적인 실행과 관련이 없을 수 있다.예를들어 OS가 관리하는 ..
CSAPP 기계수준 프로그램에서 제어와 데이터의 결합 포인터 포인터 이해하기 지금까지 어셈블리어를 사용하며 계속 사용했던 () 참조 방식을 포인터라고 생각하고 학습했다. 포인터는 C 언어의 핵심으로 주소의 값을 가르키는 화살표라고 이해하면 된다. 모든 포인터는 특정값을 가진다. 이 값은 특정 자료형을 갖는 어떤 객체의 주소다. 포인터에 대한 이해는 linked list를 직접 구현해가며 학습했다. #include #include #include // // Created by 전병준 on 24. 4. 9. // typedef struct NODE{ int data; struct NODE* next; } node; node* list; // 초기화 void init() { if (list == NULL) {..
CSAPP 이기종 자료구조 (Heterogeneous) 이기종 자료구조란? 다른 여러가지의 데이터를 포함하고 있는 구조체(struct)와 공용체(Union)을 뜻한다. 구조체(struct) C 언어의 구조체(structure)는 다양한 데이터 타입의 멤버들을 하나로 묶어서 새로운 데이터 타입을 정의하는 데 사용. 자바의 class의 개념과 아주 약간 비슷함 구조체의 offset 각 구조체의 필드값에 따른 byte 용량으로 정한다. char = 1byte, long = 8byte... 공용체(union) 말 그대로 필드값의 가장 큰 Byte만큼만 메모리를 할당하고, 그 메모리를 모든 필드값들과 공유하며 사용함. 메모리를 효율적으로 사용할 수 있지만, 한번에 하나의 필드값밖에 할당할 수 없어 지금은 잘 사용..
CSAPP 데이터의 형식 C declaration Intel data type Assembly-code suffix Size char Byte b 1 short Word w 2 int Double word l 4 long Quad word q 8 char * Quad word q 8 float Single precision s 4 double Double precision l 8 이 내용은 인텔 레지스터에 자주 사용되는 단위임으로 Assembly-code suffix는 모두 외우고 있는게 좋다. 정보 접근하기 정수 레지스터 중첩된 상자들이 보여주듯이 인스트럭션들은 16개의 레지스터 하위 바이트들에 저장된 다양한 크기의 데이터에 대해 연산할 수 있다. 역할 스택을 관리하고, 함수의 인자를 넘겨주고, 함수에..
전낙타
'CSAPP' 태그의 글 목록