본문 바로가기

Program18

[Program] (윈도우 시스템 프로그래밍) 메모리 참조 명령어 디자인 LOAD destination(register) , source(memory address) STORE source(register), destination(memory address) 이렇게 명령어를 디자인한다고 하자. LOAD 명령어는 메모리주소에서 레지스터로 값을 불러온다. 반대로 STORE 명령어는 레지스터를 메모리주소에 값을 저장한다. 예제 int a,b 를 선언하고, c 에 둘을 더한 값들을 저장하는 예제이다. LOAD 명령어로 각각의 레지스터에 값을 저장하고, 레지스터에 더하기연산값을 저장한뒤, STORE 명령어로 c 의 주소 (0x30) 에 결과를 저장한다. 물론 INTEL ASSEMBLY 에서는 mov rax, [rbp-0x30] ; mov rbx, [rbp-0x20] ; add rax,.. 2020. 10. 22.
[Programming] (윈도우 시스템 프로그래밍) CPU 명령어 구조 및 명령어 디자인 CPU 명령어 구조 및 명령어 디자인 명령어에는 일을 시키기 위한 기본정보가 다 담겨있다 연산자, 저장소, 피연산자 1, 피연산자 2 N 비트 시스템 = 레지스터길이 N 비트 = 명령어 길이 N 비트 example : 사칙연산 명령어 -예약 : 따로 예약된 2비트 -연산자 : 어떤 연산을 할것인지 나타내는 3bit example : 덧셈 : ADD -> 001 뺄셈 : SUB -> 010 곱셈 : MUL -> 011 나눗셈 : DIV -> 100 -저장소 : 연산 결과를 저장하는 3bit ( 레지스터로 제한 ) example : r1 - > 001, r2 -> 002 ... -피연산자 1,2 : 연산할 값 4bit ( 레지스터와 숫자 둘 다 가능 ) 4번째 비트 (X 표시), 0 이면 레지스터로, 1 이.. 2020. 8. 22.
[Programming] (윈도우 시스템 프로그래밍) 컴퓨터 시스템 디자인/레지스터 디자인 컴퓨터 시스템 디자인 CPU 는 종류가 많고(x64,arm,risc-v,mips), 표준이 없다.(CISC,RISC,VLIW 등 다양한 architecture 종류) 그래픽카드도 CPU 라고 할 수 있다. 다만 CPU 와 달리 GPU(Graphic Processing Unit) 라고 부르는데, GPU 는 CPU 와 비슷하게 연산을 하지만 그래픽 처리에 극히 제한되어있다. example : GPU 디자인 GPU 를 디자인할려면 H/W 전문가 그래픽알고리즘 전문가 INTERFACE 전문가 프로그래머 이런 사람들이 모여서 GPU 를 만든다. H/W 전문가 > LOGIC전문가 > ASIC 전문가, 우리나라에서는 ASIC 전문가가 주로 참여한다. ASIC 는 C 와 비슷하고, ASIC 는 논리게이트로 변환된다. .. 2020. 8. 17.
[Programming] (윈도우 시스템 프로그래밍) 64bit 기반 프로그래밍 / 에러검출, 에러코드가져오기, GetLastError() 64bit 기반 프로그래밍 64bit 기반 시스템에서 자료형에 대해 고려한 프로그래밍 이다. LLP64 vs LP64 32bit 시스템과 호환성을 중시한 모델. 운영체제 모델 char short int long pointer Windows LLP64 1byte 2byte 4byte 4byte 8byte UNIX LP64 1byte 2byte 4byte 8byte 8byte 64bit 와 32bit 공존의 문제점 int arr[10]={0,}; int arrVal=(int)arr; //데이터 손실 배열 arr 는 포인터다. 배열에서 값을 참조할때 arr[0] 으로 참조하는데, 이것은 *arr 과 같다. 포인터 이므로 8byte 의 크기를 가진다. 하지만 4byte 인 int 로 형변환을 하면 상위 4byt.. 2020. 8. 12.