CS/System programming (5) 썸네일형 리스트형 Procedures Procedures Stack Operations 이 과목에서는 런타임 스택에 집중한다. 프로시저 호출과 반환 메커니즘의 중요한 부분이다. 런타임 스택은 서브루틴 호출을 처리하기 위한 시스템 레벨에서 작동한다. 서브루틴: 일련의 작업을 수행하는 코드 블록, 인자 값을 받아들일 수 있고 결과 값을 반환할 수 있다. 1. Runtime Stack (32-Bit Mode) CPU가 직접 관리하는 메모리 배열 ESP 레지스터를 사용하여 관리된다. 32비트 모드에서 스택의 어느 위치에 대한 32비트 오프셋을 가지고 있다. ESP는 항상 스택의 맨 위에 추가되거나 푸쉬된 가장 최근 값에 대한 오프셋을 가리킨다. Push Operation 스택 포인터가 4만큼 감소한다. 스택 포인터가 가리키는 위치에 값을 복사한다... Data Transfers Addressing and Arithmetic Data Transfer Instructions 1. Intro CPU 단으로 보내기 전에 컴파일러가 type checking을 해준다. CPU는 자기가 할 수 있는 연산이면 뭐든지 다 하기 때문에 프로그래머가 엄격하게 체크해주어야 한다. 2. Operand Types 피연산자에는 기본적으로 세 가지 유형이 있다. Immediate: 숫자 리터럴 표현 레지스터: CPU의 이름이 지정된 레지스터 메모리: 메모리 위치를 참조 3. Direct Memory Operands 변수 이름은 메모리에서 오프셋을 참조 .data var1 BYTE 10h mov al var1 var1의 사이즈는 1바이트이고 10h를 포함하고 있다. 마지막 명령어는 al 레지스터에 값을 복사한다. var이 offset 10400h에 위치.. Assembly Language Fundamentals Basic Language Elements 1. First Assembly Language Program 두 개의 숫자를 더한다. 그런 다음 결과를 레지스터에 저장한다. L1: main procedure를 시작한다. L2: EAX 레지스터에 정수 5를 배치한다. L3: EAX의 값에 6을 더하여 11이 된다. L5: 프로그램을 중지하고 제어권을 OS에 반환하는 ExitProcess 라는 Windows 서비스를 호출한다. L6: main procedure의 종료 추가 결과를 sum이라는 변수에 저장한다. L2: sum 변수가 선언된다. DWORD를 통해 32비트 크기를 제공한다. 이것은 크기만 지정한다. 코드 시그먼트와 데이터 세그먼트로 나눈다. 2. Integer Literals Integer liter.. X86 Processor Architecture General Concepts 어셈블리어는 컴퓨터가 어떻게 동작하는지 배우기 아주 좋은 도구이다. 1. Basic Microcomputer Design CPU(The Central Processor Unit) 레지스터: CPU에 있는 저장소, RAM에서 명령어를 하나씩 가져와서 여기에 저장한다. high-frequency clock: CPU의 모든 작업을 동기화하고 타이밍을 맞추는 역할 control unit(CU): 읽어 들여오는 기계어를 control하는 역할 ALU: 연산을 수행한다. CPU는 메인보드에 있는 CPU 소켓에 연결된 핀을 통해 컴퓨터와 연결 대부분의 핀이 데이터 버스, 주소 버스, 제어 버스 등에 연결 됨 The memory storage unit: 컴퓨터가 실행중인 프로그램과 데이터.. Basic concept Introduction to AL(Assembly Language) (위로 갈 수록 High-level, 아래 Low-level) ML(Machine language)이란? 기계가 알아들을 수 있는 명령어로서 numeric한 즉 숫자(2진수)로 이루어진 언어이다. 모든 CPU는 자기에게 맞는 기계어가 있다. AL과 ML은 어떤 관계인가? AL은 사람이 쉽게 알아 들을 수 있는 짧은 단어로 명령을 내린다. AL과 ML은 1대1 관계이다. c++과 같은 high level language는 AL과 무슨 관계인가? 높은 레벨의 언어는 AL과 1대 다(多) 관계를 가지고 있다. portable(이식가능)한가? 그렇지 않다. 기계어는 특정 CPU에 맞게 만들어진다. 기계어와 AL은 1:1 대응이므로 이식이 안된다.. 이전 1 다음