'll Hacker
Computer Architecture(컴퓨터 구조) 본문
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) 비순차적 명령어 처리
하드웨어 및 컴퓨팅 방법론 -> 직접 메모리 접근
'Hacking > 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 |