변수와 레지스터
초기화 된 데이터의 선언
문법 : [변수이름][크기][초기값]
크기 : db(1byte), dw(2bytes), dd(4bytes), dq(8bytes)
section .data
a db 0x11
b dw 0x2222
c dd 0x33333333
d dq 0x4444444444444444
위 데이터 선언 후 빌드시 메모리 정보
그림에서 보듯 변수 a,b,c,d는 연속해서 메모리 공간에 저장되어 있다.
초기화 되지 않은 데이터
문법 : [변수이름][크기][개수]
크기 : resb(1byte), resw(2bytes), resd(4bytes), resq(8bytes)
section .bss
e resb 10
초기화 되지 않은 데이터는 파일사이즈에 영향을 주지 않는다. (파일사이즈 감소효과)
메모리/레지스터 간의 데이터 이동
mov rax, a ;변수 a의 주소값을 rax에 복사
mov rax, [a] ;변수 a의 값을 rax에 복사
;별도 크기지정이 없어서 8바이트값이 들어감 (rax = 8bytes)
;0x4433333333222211 (메모리상의 a부터 연속된 8바이트에 저장된값)
mov al, [a] ;al 1byte에 변수a값 복사
mov [a], byte 0x55 ;변수 a에 0x55 복사
mov [a], word 0x6666 ;변수 a에 0x6666을 복사 (변수 b메모리공간 침범)
mov [a], cl ;cl레지스터의 값을 a에 복사 할수 있음
Author And Source
이 문제에 관하여(변수와 레지스터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@doidoi88/변수와-레지스터저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)