프로그래밍 74

#4. 변수와 레지스터

*변수의 선언 & 사용 => 데이터를 저장하는 바구니. => 처음 바구니 사용하겠다 선언 => 이름 , 크기 지정 *어셈블리 데이터 선언 방식 *초기화된 데이터 ( section .data ) [변수이름] [크기] [초기값] [크기] db ( 1 ) / dw ( 2 ) / dd ( 4 ) / dq ( 8 ) a dd 0 a dw 0 a dd 0 a dq 0 *초기화 되지 않은 데이터 ( section .bss ) [변수이름] [크기] [개수] [크기] resb ( 1 ) / resw ( 2 ) / resd ( 4 ) / resq ( 8 ) num resb 10 section .data msg db 'Hello World', 0x00 a db 0x01, section .bss num resb 1 BSS :..

프로그래밍/C++ 2022.07.15

#3. 레지스터

*레지스터 란 ?? (위키백과) => 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억장소. => 현재 계산을 수행 중인 값을 저장하는데 사용. 즉, CPU 가 계산할 수 있는 최소 단위 64bit / 32bit 환경 -> 레지스터 크기라고 생각. 그래서 포인터의 크기가 8byte( 64bit ) / 4byte ( 32bit ) 로 나뉘어진다. 왜냐하면 레지스터가 8byte 만큼의 주소를 저장할 수 있기 때문이다. *레지스터 종류 ( 레지스터가 하나만 존재하는 것이 아니다. ) ax : 산술, 논리연산 수행. bx : esi, edi 와 함께 메모리 주소 저장 용도로 사용. cx : 카운터 레지스터, 반복 카운터. dx : 큰 수의 연산이 이루어질 때, eax 와 함께 쓰임. si : 데이터를 조..

프로그래밍/C++ 2022.07.14

#2. 데이터 기초

*컴퓨터에서 데이터 저장은 어떤 방식으로 하는가 ?? *음수를 표현하는 방법 => 최상위 비트를 '부호 유무' 사용 => '2의 보수' => 8비트 (=1바이트) 에서 최상위 비트는 '-128' 이 됨. HEX : 16진수 DEC : 10진수 OCT : 8진수 BIN : 2진수 2진수 ( 0, 1 ) => 'b' 0 1 10 11 100 101 111 1000 1001 ... => 0b ( binary ) 8진수 ( 0 1 2 ... 8 ) => '0' 0 1 2 ... 8 => 000 16진수 ( 0 1 2 ... A B C D E F ) => '0x' 0 1 2 ... F 10 => 0x00 *16진수가 좋은 경우 ?? => 2진수와의 변환이 용이 0b 1001 0101 = 0x95 *데이터 단위 8..

프로그래밍/C++ 2022.07.14

#1. Assembly SASM

*어셈블리어는 무엇인가 ?? => 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어. *어셈블러는 무엇인가 ?? => 어셈블리어를 기계어 형태의 오브젝트 코드로 해석해주는 컴퓨터 언어 번역 프로그램. => '통역사' *실행 파일 구조 *컴퓨터 구조 *하드디스크 & 메인 메모리 차이점 ?? => 컴퓨터 전원을 내렸을 때 하드디스크 : 보존 메인메모리 : 휘발 => CPU 와 가까워지면 가까워질수록 접근속도가 월등히 빨라진다. => CPU 와 메인메모리 사이를 오가는 비용이 생각보다 크다. CPU 를 좀 더 효율적으로 사용하기 위해 '캐시' 도입. *어셈블리를 배워보자 !! https://dman95.github.io/SASM/english.html %include "[io64.inc](http:/..

프로그래밍/C++ 2022.07.14