wk4 어셈블리

·2024년 4월 22일

컴퓨터 구조

목록 보기
10/11
post-thumbnail

어셈블리 데이터 유형

정수 데이터

  • 1,2,4,8 bytes로, 고정된 바이트 수를 가진다

  • 0, 양수, 음수 값을 가질 수 있다.

  • 주소(untyped pointers) : 메모리 내에서 어떤 유형의 데이터든 가리킬 수 있는 포인터이다.

부동 소수점 데이터 (float)

  • 4,8, 10 byte
  • 소수 값을 나타냄
  • 단일 정밀도(4), 배정밀도(8) 또는 확장된 정밀도(10) 가능

코드

  • 프로세스가 실행할 수 있는 명령어를 인코딩하는 일련의 바이트 시퀀스
  • 데이터 조작, 산술 및 논리 연산 수행
  • 프로그램 실행의 흐름을 제어

** 구조체 배열과 같은 집합유형 xx , 메모리에 연속적으로 할당된 바이트만 oo

어셈블리 operations

연산 특징들 !! 에 대해 알아보자

  • 레지스터 또는 메모리 데이터에 대한 산술 연산 수행

  • 메모리와 레지스터 간의 데이터 전송
    - 메모리에서 데이터를 레지스터로 로드 or 레지스터의 데이터를 메모리에 저장함

  • 제어 전송
    - 프로그램의 흐름을 제어하기 위해 이용

    • 프로시저간의 무조건적인 jump
    • 조건부 분기 등 ..

object code

어셈블러

  • .s 파일을 .o 파일로 번역
  • 각 명령어의 이진 인코딩으로 이루어져 있음
  • 실행 가능 코드의 거의 완전한 이미지 제공
  • 서로 다른 파일에 있는 코드 간의 연결 누락

링커

  • 파일 간의 참조 해결
  • 정적 런타임 라이브러리(malloc, printf...) 와 결합
  • 일부 라이브러리는 동적으로 연결됨.(linking은 프로그램 실행되기 시작할 때 발생해요~)

cf) malloc() : function to dynamic memory allocation

참고)


%rsp와 %esp는 둘 다 스택 포인터를 나타낸다

%rsp는 64비트 레지스터로서 현재 스택의 상단 주소를 가리킵니다. 
이것은 x86-64 아키텍처에서 사용됩니다.
%esp는 32비트 레지스터로서 현재 스택의 상단 주소를 가리킵니다. 
이것은 32비트 x86 아키텍처에서 사용됩니다.
주요 차이점은 데이터의 크기와 해당 아키텍처에서 사용되는 비트 수입니다. 
%rsp는 64비트 주소를 가리키며, %esp는 32비트 주소를 가리킵니다. 그렇기 때문에 %rsp는 64비트 프로세서와 함께 사용되고, %esp는 32비트 프로세서와 함께 사용됩니다.
profile
어리둥절 빙글빙글 돌아가는 코딩세상~

0개의 댓글