시스템

어셈블리어 레지스터

2021. 11. 7. 22:20
목차
  1. 범용레지스터
  2. 인덱스 레지스터 
  3. 포인터 레지스터 
  4. 상태 레지스터 
  5. 세그먼트 레지스터 
728x90

레지스터란 CPU 내에서 데이터를 일시적으로 저장하는 작고 빠른 저장 장소(기억 장치)로 다양한 종류가 있다.

범용레지스터

 먼저 레시스터들 중 범용레지스터란 말 그대로 용도를 특별히 정해두지않고 다양하게 쓸 수 있는 레지스터를 뜻한다. 

표에서도 보이듯이 운영체제에 따라서 이름이 조금씩 다르다.

범용레지스터에는 8개(x64 에서는 16개)의 종류가 있고 운영체제에 따라 이름이 조금씩 변하는데 
16bit일 경우 : ax,bx,cx,dx ~
32bit일 경우 : eax,ebx,ecx,edx ~
64bit일 경우 : rax,rbx,rcx,rdx ~

이런식으로 표기하게 된다. x64의 구조로 레지스터들의 역할을 알아보겠다.

rax : 함수가 실행된 후 리턴값을 저장합니다. → 반환되기 전까지 범용 레지스터로 자유롭게 사용된다.

rcx,rdx,r8,r9 : 범용 레지스터들 중 함수가 실행될때 필요한 인자들을 저장하는 용도로 사용하는 레지스터들을 함수 호출 규약이라고 하는데 이들이 x64의 함수 호출 규약들이다. 이들은 함수를 호출할때 필요한 인자들을 rcx,rdx,r8,r9 순으로 저장한다. → rax 와 같이 본 목적으로 사용되지 않을땐 범용 레지스터로 자유롭게 사용된다.

rsp : 다른 범용 레지스터들과는 달리 용도가 정해져 있는 특별한 레지스터로 함수의 저장공간인 스택의 가장 위쪽 주소를 가리키는 스택 포인터 이다. → push,pop 명령어로 rsp 값을 8bit 씩 움직이면서 스택프레임의 크기를 변경하는 역할을 한다. 

인덱스 레지스터 

rsi : 데이터를 복사할때 복사할 데이터의 주소가 저장된다. 

rdi : 데이터를 복사할 때 복사된 dest 데이터(dest : 데이터가 복사될 곳을 가리키는 포인터)의 주소가 저장된다. 

포인터 레지스터 

범용레지스터에도 포함되었던 rsp 가 있고 다른 레지스터로는 rbp 가 있다.

rbp :  함수 호출시 스택프레임이 형성 되는데 스택프레임의 시작 지점 주소를 저장한다. 

rip : 명령어 포인터로써 다음에 실행될 명령어가 위치한 주소를 가리키고 있다. → 프로그램의 실행 흐름과 관련된 중요한 레지스터이다. 

상태 레지스터 

FLAGS : 이름에 맞게 현재 상태나 조건을 연산 결과에 따라  0 과 1로 나타내는 레지스터이다. 여러 종류가 있는데 몇가지만 알아보자면 
→ CF : 산술연산 등의 연산이 일어났을때 자리올림이 생기는 경우 CF 의 값이 1이 된다. 부호가 없는 연산이다.

ZF : 연산의 결과가 0일때 ZF는 1이 된다. 

SF:  CF 와 다르게 부호가 있는 연산에서 쓰이며 양수인지 음수인지를 가리킨다. 양수일때 0, 음수일때 1

OF: 부호가 있는 연산에서 CF의 역할을 한다.

세그먼트 레지스터 

세그먼트 레지스터는 보호모드(운영체제와 하드웨어 부분을 kernel 이라 지칭하고 사용자가 접근하지 못하게 함)에서 세그먼트 서술자 테이블에 대한 포인터를 가진다. 
따라서 미리 할당된 메모리의 영역에 대한 시작 주소로 사용된다. 

세가지가 있는데 SS,DS,CS가 있다. 

 

저작자표시 (새창열림)

'시스템' 카테고리의 다른 글

중앙처리장치- CPU 실행주기  (0) 2022.01.19
중앙처리장치-정의,구성  (0) 2022.01.19
리눅스 기본 명령어1  (0) 2021.12.06
어셈블리 스택프레임  (0) 2021.11.07
  1. 범용레지스터
  2. 인덱스 레지스터 
  3. 포인터 레지스터 
  4. 상태 레지스터 
  5. 세그먼트 레지스터 
'시스템' 카테고리의 다른 글
  • 중앙처리장치- CPU 실행주기
  • 중앙처리장치-정의,구성
  • 리눅스 기본 명령어1
  • 어셈블리 스택프레임
코춘대길
코춘대길
우리의 인생은 우리가 노력한 만큼 가치가 있다. 2021~2023 고등학생, 2024 ~ Technical Architect 2025~2027 육군정보보호병
코춘대길
무지성 컴퓨터 성장일기
코춘대길
전체
오늘
어제
  • 분류 전체보기 (162)
    • 수상 실적 (8)
    • 네트워크 (132)
      • 보안 (3)
      • 서버 (20)
      • 클라우드 컴퓨팅 (25)
      • 네트워크 일반 (75)
      • 무선 네트워크 (3)
      • 네트워크 가상화, 자동화 (5)
      • 통신 설비 (0)
    • 정보보안산업기사 (0)
    • 시스템 (5)
    • Web (6)
    • C,C++ (8)
    • 사무 (2)
      • 엑셀,파워포인트 (2)
    • 일상 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • vmnet
  • 컨테이너 오케스트레이션 툴
  • flooding
  • syn flooding
  • 실장비
  • System manager
  • 컨테이너
  • Session Manager
  • 클라우드 컴퓨팅
  • 실행주기
  • cisco nat
  • CISCO
  • alb
  • 토폴로지
  • 도커
  • 개어려움
  • 실장비 초기화
  • AWS
  • 네트워크 보안
  • 동적라우팅

최근 댓글

최근 글

hELLO · Designed By 정상우.
코춘대길
어셈블리어 레지스터
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.