knockon (16)
2024-09-19 00:31:36

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-17 00:31:45

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-16 22:53:52

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-16 19:13:12

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-16 19:09:28

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-16 19:08:46

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-16 19:07:46

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-09-16 19:06:31

보호글입니다.
비밀번호를 입력하시면
내용을 보실 수 있습니다.


2024-08-20 03:25:32
  • 전처리
  • 컴파일
  • 어셈블
  • 링킹

전처리

전처리 과정에서는 소스코드에서 주석을 제거하고, 전처리 지시문을 처리한다.(#include #define)같은 것들이 전처리 지시문이다.

컴파일

전처리를 마친 소스코드를 어셈블리 언어로 변환한다. C언어나, C++, 파이썬 등의 하이레벨 언어가 어셈블리로 변환되는 과정인데, 이의 역과정(어셈블리어를 하이레벨 스타일의 언어로 변환하는 것)은 디컴파일이라고 한다.

어셈블

컴파일된 어셈블리 코드를 바이너리 코드(기계어)로 바꾸는 과정이다. 어셈블하게 되면 기계어로 작성된 오브젝트 파일이 된다.

링킹

위의 과정까지 마쳤으면 CPU가 실행 가능한 바이너리 파일이 되는데, 링킹을 통해 여러 오브젝트 파일들을 결합하여 실행 가능한 프로그램으로 만들게 된다.

'knockon' 카테고리의 다른 글

bubble  (0) 2024.09.16
REV-basic  (0) 2024.09.16
[3주차 TIL] Knockon Bootcamp 컴퓨터 아키텍쳐  (0) 2024.08.20
[2주차 TIL] KnockOn Bootcamp 탐색 알고리즘  (0) 2024.08.13
[2주차 TIL] KnockOn Bootcamp 정렬 알고리즘  (0) 2024.08.13
2024-08-20 02:55:14

COMPUTER ARCHITECTURE


  • 컴퓨터 구조
  • 명령어 집합 구조
  • 범용 레지스터
  • 세그먼트 레지스터
  • 플래그 레지스터
  • 명령어 포인터 레지스터

- 컴퓨터 구조

- 폰 노이만 구조

  • 중앙처리장치(central processing unit):
    산술논리장치(Arithmetic Logic Unit): 산술, 논리연산
    제어장치(Control Unit): CPU 제어
    레지스터(Register): CPU에 필요한 데이터 저장
  • 기억장치(memory)
    램(Random-Access Memory): 주기억장치
    보조기억장치: HDD, SDD
    레지스터, 캐시: 데이터 병목현상 방지 저장장치. 보조기억장치 아님
  • 버스(bus):
    data bus
    address bus
    control bus
    the software that carries data -> also called bus

- 컴퓨터 아키텍쳐란?

  • 시스템의 설계와 구성 요소를 정의하는 구조, 프로세서나 메모리, 입출력 장치 간 상호작용 등등이 포함된다.

종류

  • X86(CISC)
    인텔의 32비트 아키텍쳐. 주로 데스크톱, 노트북, 서버에서 많이 사용되었으나, 현재는 64비트가 주류
  • x86_64(CISC)
    x86의 확장판으로 볼 수 있는 64비트 아키텍쳐. 현재는 이게 많이 사용된다.
  • ARM(RISC)
    인텔의 두 아키텍쳐보다 저전력, 단순한 명령어 집합. 에너지 효율성이 높다.
  • MIPS(RISC)
    임베디드 시스템에 많이 사용된다.
  • RISC-V(RISC)
    마찬가지로 임베디드나 교육적 목적에 주로 사용.

- 명령어 집합 구조(Instruction Set Architecture)

  • IA-32, x86-64(x64), MIPS, AVR

- x86-64 architecture

WORD:32 비트, 64비트...:

CPU가 이해할 수 있는 데이터의 단위. 32비트 아키텍처-> ALU가 32비트까지 계산 가능. 설계상 CPU는 32비트까지의 데이터 처리 가능. 워드가 크면 가상메모리가 크다. 64비트 아키텍처에서 메모리 자원이 부족해서 소프트웨어의 성능이 떨어지는 경우는 거의 발생하지 않음.

레지스터: CPU 내부의 저장장치

1. 범용 레지스터

주 용도는 있으나 그 외에도 자유롭게 사용 가능

rax(accumulator register)함수의 반환값 
rbx(base register)x64에서는 주된 용도 없음 
rcx(counter register)반복문의 반복 횟수, 연산 시행 횟수 
rdx(data register)x64에서는 주된 용도 없음 
rsi(source index)데이터를 옮길 때 원본을 가리키는 포인터 
rdi(destination index)데이터를 옮길 때 목적지를 가리키는 포인터 
rsp(stack pointer)사용중인 스택의 위치를 가리키는 포인터 
rbp(stack base pointer)스택의 바닥을 가리키는 포인터 
2. 세그먼트 레지스터

과거에는 메모리 세그먼테이션 or 가용 메모리 확장
현재는 주로 메모리 보호를 위해 사용
cs, ss, ds, es, fs, gs: 각각 16비트의 레지스터
코드, 스택 메모리, 데이터, 나머지는 운영체제별 용도

3. 명령어 포인터 레지스터

CPU가 어느 부분의 코드를 실행할지 가리킴.
기계어로 작성.
x64아키텍처에서 명령어 레지스터: rip, 8바이트

4. 플래그 레지스터

CPU의 현재 상태 표현

CF(Carry Flag)부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우
ZF(Zero Flag)연산의 결과가 0일 경우
SF(Sign Flag)연산의 결과가 음수일 경우
OF(Overflow Flag)부호 있는 수의 연산 결과가 비트 범위를 넘을 경우