목록언리얼 개발자/어셈블리 (3)
연습장
7. 시프트(shift)연산과 논리(logical)연산 시프트 연산 한칸씩 밀겠다 10진수 기준으로 보면(부호가 음수가 아니라는 가정하에) 곱하기2를 한 것과 똑같음 mov eax, 0x12345678 PRINT_HEX 4, eax shl eax, 8 PRINT_HEX 4, eax shr eax, 8 PRINT_HEX 4, eax 시프트 연산 : 왼쪽이나 오른쪽으로 한 칸씩 밀어주는 부호가 음수가 아니라는 기준 하에 시프트 연산으로 왼쪽으로 당기는 행동 자체는 곱하기 2를 한것과 동일함 곱셈 나눗셈을 시프트 연산으로 빠르게 처리할 수 있음(간접적으로 사용) 게임서버에서 objectID를 만들어 줄 때 (직접적으로 사용) 논리 연산 not and or xor 비트 논리 연산자 조건 A : 잘생겼다 조건 B..
4. 변수와 레지스터 *메모리 레지스터 mov rax, a ; a라는 바구니의 주소값을 rax에 복사 mov rax, [a] ; a라는 바구니 안에 있는 값을 rax에다 복사 *변수의 선언 및 사용 변수: 데이터를 저장하는 바구니 처음에 바구니를 사용한다고 선언(이름과 크기 지정) * 메모리에는 구분할 수 있도록 주소(번지수)가 있다 고정적X 실행할 때 마다 변화O **초기화 된 데이터 변수이름, 크기, 초기값 크기 db(1) dw(2) dd(4) dq(8) section .data a db 0x11 b dw 0x2222 c dd 0x33333333 d dq 0x4444444444444444 **초기화 되지 않은 데이터 변수이름, 크기, 개수 크기 resb(1) resw(2) resd(4) resq(8)..
어셈블리어를 기초로 배우는 이유 : C++ 코드 실행을 하며 수많은 에러를 발견하는데에 도움이 됨 1. 환경 설정 SASM * 코드 실행, 실행파일로도 저장 가능 * C++ / 어셈블리(가장 low함) * 컴파일러, 어셈블러 == 번역기 * Section.text :코드에 대한 정보 Section.data :데이터에 대한 정보 -컴퓨터 3총사 : CPU, 메모리, 하드디스크(SSD) 메모리와 하드디스크의 큰 차이점은 전기가 나가면 메모리보존이 하드디스크는 되지만 메모리는 안됨 %include "io64.inc" section .text global CMAIN CMAIN: ;write your code here PRINT_STRING msg xor rax, rax ret section .data msg d..