본문 바로가기

Study/Reverse Engineering

Computer Architecture(컴퓨터 구조)

728x90

SubTopic : 컴퓨터 구조, 명령어 집합구조, x86-64

컴퓨터 구조 ⊃ 명령어 집합 구조 ⊃ x86-64 아키텍처

 

1. 컴퓨터 구조 (Computer Architecture)

Def. 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법을 말함.

 

폰 노이만 구조

중앙처리장치(연산, 제어) + 기억장치(memory) => 버스로 통함

버스란? 

 💡 컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로

      - 데이터 이동 = 데이터 버스

      - 주소 지정 = 주소 버스

      - 읽기/쓰기 제어 = 제어 버스

      - 랜선, 데이터전송을 목적으로 하는 소프트웨어, 프로토콜 = 버스

 

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

CPU가 해석하는 명령어의 집합을 의미함.

프로그램의 코드는 기계어로 작성되어 있는데, 프로그램을 실행하면 이 명령어들을 CPU가 읽고, 처리함.

크기가 큰 디바이스(pc, 서버용) -> X86-64

크기가 작은 디바이스(스마트폰, 태블릿,스피커, 공유기 등 임베디드 장비들) ->  arm, MIPS, AVR 프로세서

 

X86-64 아키텍처(amd64) -> 되게 중립적

n 비트 아키텍처

n = 64 or 32 -> CPU가 한번에 처리할 수 있는 데이터의 크기

in computer science -> CPU가 이해할 수 있는 데이터의 단위 "WORD"라고 부름

 

1) 레지스터

1-1) 범용 레지스터(General Register)

   - 각각의 범용 레지스터는 8바이트를 저장가능

   - 주용도가 있으나, 그 외 임의의 용도로도 사용가능

 

2) 세그먼트 레지스터

CS(코드), SS(스택), DS(데이터), ES, FS, GS 총 6가지 세그먼트 레지스터 존재

각 레지스터의 크기는 16비트

 

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

 - CPU가 어느 부분의 코드를 실행할지 가리킴

 - x64 아키텍처의 명령어 레지스터는 rip, 크기는 8바이트 

 

4) 플래그 레지스터

 - 프로세서의 현재 상태를 저장하고 있는 레지스터

 

AH AL
EAX

 

마이크로 아키텍처 = 정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU의 회로를 설계

1) 캐시 설계

2) 파이프라이닝

3) 슈퍼 스칼라

4) 분기 예측

5) 비순차적 명령어 처리

 

하드웨어 및 컴퓨팅 방법론 -> 직접 메모리 접근

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Study > Reverse Engineering' 카테고리의 다른 글

dreamhack : rev-basic-1 write-up  (0) 2024.05.03
Windows Memory Layout  (0) 2024.05.02
정적분석과 동적분석  (0) 2024.04.11
Binary 개념 정리  (0) 2024.04.11
Reverse Engineering 큰 개념 정리  (0) 2024.04.11