変数とレジスタ
イニシャルデータの宣言
構文:変数名[サイズ](Size)[初期値](Initial Value)
サイズ:db(1 byte)、dw(2 bバイト)、dd(4 bバイト)、dq(8バイト)
section .data
a db 0x11
b dw 0x2222
c dd 0x33333333
d dq 0x4444444444444444
上記データ宣言後の構築時のメモリ情報図に示すように、変数a,b,c,dはメモリ空間に連続的に記憶される.
初期化されていないデータ
構文:変数名[サイズ](Size)[カウント](Count)
サイズ:resb(1 byte)、resw(2 bytes)、resd(4 bytes)、resq(8 bytes)
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에 복사 할수 있음
Reference
この問題について(変数とレジスタ), 我々は、より多くの情報をここで見つけました https://velog.io/@doidoi88/변수와-레지스터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol