[SW사관학교 정글]63일차 TIL

김승덕·2022년 11월 20일
0

SW사관학교 정글 5기

목록 보기
103/150
post-thumbnail

정보 접근하기

x86-64 주처리장치 CPU는 64비트 값을 저장할 수 있는 16개의 범용 레지스터를 보유하고 있다. 이들 레지스터는 정수 데이터와 포인터를 저장하는 데 사용한다. 각 레지스터의 이름은 역사적인 진화과정의 이유로 이름이 정해졌다.

위 이미지에서 볼 수 있듯이 중첩된 상자들이 있고, 이는 인스트럭션들이 16개의 레지스터 하위 바이트들에 저장된 다양한 크기의 데이터를 연산할 수 있다는 말이다. 바이트수준 연산들은 가장 덜 중요한 바이트에 대해 연산을 할 수 있으며, 16비트 연산들은 가장 덜 중요한 2바이트에 접근하고, 32비트 연산은 덜 중요한 4바이트에, 64비트 연산은 레지스터 전체에 접근할 수 있다. 그리고 그림의 오른쪽에 기입된것처럼 일반적인 프로그램에서 서로 다른 레지스터들은 서로 다른 목적으로 이용된다. 이들 중 가장 특이한 점은 스택 포인터 %rsp로 런타임 스택의 끝 부분을 가리키기 위해 사용된다는 점이다.

오퍼랜드 식별자

대부분의 인스트럭션은 하나 이상의 오퍼랜드를 가진다. (오퍼랜드는 피연산자라는 뜻이고 처리될 데이터 그 자체 또는 데이터를 지정하는 컴퓨터 명령어의 일부를 의미한다. 출처 : http://www.terms.co.kr/operand.htm) 오퍼랜드는 연산을 수행할 소스 값과 그 결과를 저장할 목적지의 위치를 명시한다.

그래서 여러가지 오퍼랜드의 종류는 세가지 타입으로 구분할 수 있다.

  1. immediate로, 상수값을 말한다. 상수는 $ 기호 다음에 C표준 서식을 사용하는 정수이다.
  2. register로, 레지스터의 내용을 나타낸다.
  3. 오퍼랜드 타입, 메모리 참조로 유효주소라고 부르는 계산된 주소에 의해 메모리 위치에 접근하게 된다.
    1. 여러가지 유형의 메모리 참조를 가능하게 하는 많은 주소지정방식이 존재한다. 가장 일반적인 형태는 표 마지막에 있는 Imm(rb,ri,s)다.
profile
오히려 좋아 😎

0개의 댓글