728x90
반응형
SMALL
컴퓨터 구조
기능 구조의 설계 | 명령어 집합구조 | 마이크로 아키텍처 | 하드웨어 및 컴퓨터 방법론 |
폰 노이만 구조 | x86, x86-64 | 캐시 설계 | 직접 메모리 접근 |
하버드 구조 | ARM | 파이프라이닝 | - |
수정된 하버드 구조 | MIPS | 슈퍼 스칼라 | - |
- | AVR | 분기 예측 | - |
- | - | 비순차적 명령어 처리 | - |
x-86-64 아키텍처
x64 아키텍처에는 범용, 세그먼트, 명령어 포인터, 플래그 레지스터가 존재한다.
범용 레지스터
x86-64에서 범용 레지스터는 8바이트를 저장할 수 있다.
이름 | 주용도 |
rax(accumulator register) | 함수의 반환 값 |
rbx(base register) | - |
rcx(counter register) | 반복문의 반복 횟수, 각종 연산의 시행 횟수 |
rdx(data register) | - |
rsi(source index) | 데이터를 옮길 때 원본을 가리키는 포인터 |
rdi(destination index) | 데이터를 옮길 때 목적지를 가리키는 포인터 |
rsp(stack pointer) | 사용중인 스택의 위치를 가리키는 포인터 |
rbp(stack base pointer) | 스택의 바닥을 가리키는 포인터 |
세그먼트 레지스터
x64 아키텍처에는 cs, ss, ds, es, fs, gs 총 6가지 세그먼트 레지스터가 존재한다.
각각의 크기는 16비트이다.
명령어 포인터 레지스터
CPU가 어느 부분의 코드를 실행할지 가리키는 역할
x64 아키텍처의 명령어 레지스터는 rip이며, 크기는 8바이트이다.
플래그 레지스터
x64 아키텍처에는 "RFLAGS"라고 불리는 64비트 크기의 플래그 레지스터가 존재한다.
플래그 | 의미 |
CF(Carry Flag) | 부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 설정 된다. |
ZF(Zero Flag) | 연산의 결과가 0일 경우 설정 된다. |
SF(Sign Flag) | 연산의 결과가 음수일 경우 설정 된다 |
OF(Overflow Flag) | 부호 있는 수의 연산 결과가 비트의 범위를 넘을 경우 설정 된다. |
728x90
반응형
LIST
'시스템 보안 > 이론' 카테고리의 다른 글
[System] x86 Assembly (0) | 2023.05.01 |
---|---|
[System] 리눅스 프로세스 메모리 구조 (0) | 2023.05.01 |
[System] x86, x64 레지스터, BoF 란 무엇인가? (0) | 2023.03.20 |
[System] .so .a .o .c 이란 무엇인가? (0) | 2023.03.14 |
[System] dll 파일이란 무엇인가? (0) | 2023.03.14 |