목록Assembly (10)
오븐 노트
메모리 저장구조 컴파일시 크기 결정 CODE 함수, 제어문, 상수 영역 DATA 전역 변수 BSS 전역 변수 Run time시 크기 결정 HEAP 동적 할당 STACK 지역 변수 스택 (stack) : 함수가 사용하는 일종의 메모장 - 매개 변수 전달 - 돌아갈 주소 관리 레지스터 - a b c d 범용 레지스터 - 포인터 레지스터 ㄴ ip (Instruction Pointer) : 다음 수행 명령어의 위치 ㄴ sp (Stack Pointer) : 현재 스택 tap 위치 (일종의 cursor) ㄴ bp (Base Pointer) : 스택 상대주소 계산용 https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [..
LABEL_LOOP: mov ecx, 10 -> ecx에 10 선언 dex ecx -> sub ecx, 1과 동일함 inc ecx -> add ecx, 1과 동일함 cmp ecx, 0 -> ecx가 0이 되었는가 jne LABEL_LOOP -> 같지 않다면 다시 실행 loop [라벨] - ecx에 반복 횟수 선언 - loop 할때마다 ecx 1감소. 0이면 빠져나가고 아니면 라벨로 이동 https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의 Assembly 카테고리의 글은 인프런 Rookiss님의 ..
CMP dst, src (dst가 기준) 비교 결과물은 Flag Regisrer에 저장됨 JMP [label] 시리즈 (모든 if 조건과 비슷) JMP : 무조건 jump JE : JumpEquals 같으면 jump JNE : JumpNotEquals 다르면 jump JG : JumpGreater 크면 jump JGE : JumpGreaterEquals 크거나 같으면 jump 등등 https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의 Assembly 카테고리의 글은 인프런 Rookiss님의 강의를..
not : 조건이 거짓일 경우 1, 참일 경우 0 and : 두 조건 모두 참일 경우 1, 하나라도 거짓일 경우 0 or : 두 조건 중 하나라도 참일 경우 1, 전부 거짓일 경우 0 xor : 두 조건 중 하나가 참이고 하나가 거짓일 경우 1, 두 조건 모두 참이거나 거짓일 경우 0 ㄴ 동일한 값으로 두번 xor시 자기 자신으로 되돌아오는 특성을 가짐 (암호학에서 유용) 시프트 연산자 : 이진수 비트 이동 연산자 (비트 크기를 넘어서는 연산 실행 시 넘치는 비트는 소멸 / 부호 비트 주의) https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Par..
add a, b (a = a + b) sub a, b (a = a - b) a는 레지스터 or 메모리 b는 레지스터 or 메모리 or 상수 단, a b 모두 메모리로는 불가 mul reg mul bl => al * bl (연산 결과를 ax에 저장) mul bx => ax * bx (연산 결과를 dx(상위 16비트) ax(하위 16비트)에 저장) ex) mov ax, 0 mov al, 5 mov bl, 8 mul bl Output : 40 div reg div bl => ax / bl (연산 결과를 al(몫) ah(나머지)에 저장) ex) mov ax, 100 mov bl, 3 div bl Output : 33 https://www.inflearn.com/course/%EC%96%B8%EB%A6%A..
동일한 데이터이더라도 분석 방식에 따라 다른 결과값을 가져올 수 있다. Endian : 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법 ex) 데이터 선언 - 1234 Big-Endian - 1234로 저장 장점 - 숫자 비교에 유리하다 ㄴ 이진수에서는 상위 비트로 갈수록 값이 커진다. 따라서 큰 단위가 앞에 나온다. (비교에 유리) Little-Endian - 4321로 저장 장점 - 캐스팅에 유리하다 - 수학적 연산이 쉽다 https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인..
메모리 영역 data 영역 - 초기화 된 데이터 변수 선언 스타일 - [변수명] [크기] [초기값] [크기] db(1 byte define byte) / dw(2 byte define word) dd(4 byte define double) / dq(8 byte define quad) bss 영역 - 초기화 되지 않은 데이터 변수 선언 스타일 - [변수명] [크기] [개수] [크기] resb(1 byte) / resw(2 byte) resd(4 byte) / resq(8 byte) https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++..
8 bit = 1 byte 16 bit = 2 byte = 1 word 32 bit = 4 byte = 2 word = 1 dword (double-word) 64 bit = 8 byte = 4 word = 1 qword (quad-word) - CPU가 연산을 할 경우 임시적으로 연산 결과를 저장하고 사용하기 위함 (temp) - 레지스터의 크기는 운영체제 비트 최대치 (64 bit) - 전체 (64 bit) = rax / 절반 (32 bit) = eax / 4분의 1 (16 bit) = ax / 8분의 1 (8 bit) = ah, al - mov rax, num -> num 값을 rax에 복사, 저장 명령 https://www.inflearn.com/course/%EC%96%B8%EB%A6%A..