엔지니어가 되고 싶은 공돌이

05. Program and Instruction Set 본문

Computer Science/System Programming

05. Program and Instruction Set

Geca 2025. 2. 6. 17:56

 

5. 1. Program

 

- Program: Data와 Instructions의 집합.

 

 

- CPU(Central Processing Unit)

 

  1) PC(Program Counter): 다음 실행할 명령어의 주소를 저장.

 

     IA-32: EIP , x86-64: RIP.

 

  2) Register File: 많은 Program Data를 저장.

 

  3) Condition Codes: 최근에 수행한 산술연산의 Status Information을 저장.

 

 

- ISA(Instruction Set Architecture): 명령어 집합으로, 명령어를 구성하는 필드의 수, 필드당 비트를 지정.

 

  ISA는 software와 hardware 사이에서 interface역할을 수행하며,

 

  ISA에 따라서 명령어 해석 방식, 레지스터 종류와 개수가 달라질 수 있습니다.

 

 

- gcc -0 p1.c p2.c -o p : -0은 최적화를 사용, 최종결과를 file p에 넣겠다는 의미.

 

  1) text : C Program (p1.c p2.c) -> Compiler(gcc -S) ->

 

  2) text: Asm Program(p1.s p2.s) -> Assembler(gcc or as) ->

 

  3) binary: Object Program(p1.o p2.o) -> Linker(gcc or ld) ->

 

  4) binary: Executable Program(p).

 

 

- Linker: 파일간의 references를 처리.

 

              static run-time libraries와 결합.

 

              일부 라이브러리는 동적으로 연결.

 

 

- Disassembling: 기계어 파일을 어셈블리 파일로 대략적으로 나타내며, 기계어파일 검사에 유용합니다.

 


 

5. 2. CISC and RISC

 

1) CISC(Complex Instruction Set Computer): 명령어 위주로 설계된 CPU. [x86]

 

     Pros: 명령어가 많아 호환성이 좋으며,

 

              명령어 몇 개 만으로 작업을 수행할 수 있어 메모리 공간을 효율적으로 사용할 수 있으며,

 

              명령어의 형태와 크기가 가변적입니다.

 

     Cons: 실행시간이 일정하지 않고,

 

               복잡하며,

 

               속도가 상대적으로 느리고,

 

               전력소모가 많습니다.

 

               무엇보다 파이프라이닝을 수행하기가 매우 불리하다는 큰 단점을 가지고 있습니다.

 

 

2) RISC(Reduced Instruction Set Computer): CISC보다 명령어 종류가 적고 짧게 규격화된 CPU.

 

     Pros: 명령어 길이가 정해져 있어 파이프라이닝이 유리하고,

 

              속도가 빠르며,

 

              전력소모가 적습니다.

 

     Cons: 많은 레지스터가 필요하고,

 

               CISC보다 더 많은 명령어가 필요합니다.

 

CISC RISC
가변길이 명령어 고정길이 명령어
상대적으로 다양한 명령어 상대적으로 단순한 명령어
실행되는 명령어의 수가 적음 실행되는 명령어의 수가 많음
파이프라이닝 어려움 파이프라이닝 쉬움
느린 처리속도 빠른 처리속도
전력소모 많음 전력소모 적음
명령어가 여러 클럭에 걸쳐 실행 명령어가 1클럭 내외에 실행

 


 

5. 3. IA-32

 

- IA-32: intel의 x86 – 32 CPU에서 사용하는 ISA.

 

  CISC를 사용합니다.

 

- intel은 이전 instrcution set에 대한 호환성을 제공하기 위해,

 

  새로 CPU를 만들어도 옛날 instrcution set을 변경하지 않으므로,

 

  시간이 지날수록 instrcution set은 증가하였습니다.

 

 

- General-Purpose Registers

 

1) EAX: Arithmetic Opeartions and Logical Operations의 함수의 반환값을 저장.

 

2) EBX: Memory Address를 저장. / 다른 레지스터가 부족할 때 사용.

 

3) ECX: 루프문 같은 곳의 Counting 역할.

 

4) EDX: Data를 저장 / 다만, EAX처럼 리턴값의 용도로는 사용되지 않음.

 

5) ESI, EDI: Source Index, Destination Index / String, Repetitive Data를 처리 또는 이동에 사용.

 

6) ESP: Stack Pointer / 스택을 어디까지 썼는지 가리키는 포인터.

 

7) EBP: Stack Base Pointer / 스택의 시작지점.

 

 

- EFLAGS Register

 

1) CF: Carry의 여부.

 

2) ZF: 연산결과가 Zero인지의 여부.

 

3) SF: 연산결과가 Positive Nubmer인지, Negative Number 인지의 여부.

 

4) OF: Overflow가 있는지 없는지의 여부.

 

 

- EIP(PC): 다음 실행할 명령어의 주소를 저장.


'Computer Science > System Programming' 카테고리의 다른 글

07. Assembly 2: Control Flow  (0) 2025.02.07
06. Assembly 1: Basic Operations  (0) 2025.02.06
04. Byte Ordering  (0) 2025.02.05
03. Representation of Floating Points  (0) 2025.02.04
02. Representation of Integer  (0) 2025.02.03
Comments