목록C++ (20)
Dev fox
메모리와 레지스터의 값 주소 확인 메모리 레지스터 값의 연관성?을 확인하는 과정 section .data - 초기화 된 데이터 - [변수이름] [크기] [초기값] - [크기] db(1byte) dw(2byte) dd(4byte) dq(8byte) section .bss - 초기화 되지 않는 데이터 - [변수이름] [크기] [개수] - [크기] resb(1) resw(2) resd(4) resq(8) - data와 bss의 차이는 초기화 되는지 여부인데 bss를 사용하면 용량을 줄일 수 있음.. 레지스트 -> 메모리 .data에 변수를 선언하고 해당 데이터를 레지스터에 옮기며 해본 결과 mov rax, a(.data에서 선언한 값)를 쓰면 변수 a의 주소값을 rax에 복사하는것에 불과함 SASM에서..

연산은 CPU내 레지스터에서 진행.. register는 가장 빠른 저장 공간 rax 64bit eax 32bit 64bit에서는 범용 레지스터로 rax, rbx, rcx, rdx 가 존재 sasm에서 mov eax, 0x1234 를 실행할경우 실행중에 레지스터 rax에 0x1234값이 저장됨 rax(64bit)안에 eax(32bit)에 저장한거로 이해함.. mov rbx, 0x12345 는 rbx에 0x12345 저장됨 mov cl, 0xff 경우 rcx안에 해당값이 저장됨 -------------------------------------------------------------------- mov eax, 0x1234 mov al, 0x00 실행 시 rax에 0x1234가 저장되면 이후에 mov a..

1. SASM 다운로드 2. 다운로드 후 세팅에서 x64로 변경 (64bit) 3. hello world 출력해보기 64bit 설정후에 hello world 찍어보려니 에러가 자꾸 나서 검색해보니 맨위에 %include "io64.inc"가 없으면 PRINT_STRING등 SASM에서 지원하는 함수들이 사용되지 않는듯함.. 해당 코드 추가하고 실행하니 hello world 출력 완료 section .text 는 코드쓰는곳.. section .data는 변수선언하는곳.. 어셈블러라는게 결국 컴퓨터 언어로 번역해주는거라고 생각하면 되는것같음 인프런 강의 [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] 참고