[C++]_S1-03_레지스_기초

신치우·2023년 11월 27일

CPP

목록 보기
3/62

레지스터 사용 이유

  1. 접근 속도가 빠름
  2. RAM이나 하드디스크는 CPU 계산 중 사용하기에 너무 멀고 속도가 느림

    64 bit = 8 byte = 4 word = 2 dword = 1 qword

프로그램에서 많이 사용하는 레지스터

EAX, EBX, ECX, EDX
그리고 해당 레지스터를 또 어떻게 쪼개서 쓰는지

(ref : CPPRO레지스터 기초)

다시 어셈블리로 돌아와서 mov 사용방법

mov는 레지스터에 값을 복사해 넣는 명령어이다
mov A,B --> B를 A에 복사해 넣는다


그럼 기존에 들어가 있던 곳에 새로운 값을 밀어 넣으면 어떻게 되는지 확인해보자

처음 rax에는 0x1234 가 들어가있었고 mov al, 0x00 이 실행된 이후에는 0x1200 으로 변경되었다. 왜 0이 아니고 0x1200 이 되었을까

0x1234는 보다시피 위와 같은 바이너리 형태를 갖는다. 우리는 mov al,0x00을 실행하면 al인 제일 마지막 8bit에만 0x00을 넣는게 되는 것이다. 따라서 아래 그림과 같이 0x1200이 나오게 되는 것이다.

  1. 레지스터는 아주 빠른만큼 저장공간이 적다.
  2. CPU 연산 중에 바로 사용되기 위한 데이터들이 저장된다.
  3. 일반적인 코딩으로 값을 복사해 넣는 방식으로 생각하면 안된다.
profile
https://shin8037.tistory.com/

0개의 댓글