일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- virtual destructor
- diamond inheritance
- 더 지니어스 양면포커
- base from member
- virtual function
- vector size
- virtual inheritance
- member function pointer
- vector capacity
- operator overloading
- c++ basic practice
- pointer to member data
- std::ostream
- placement new
- std::endl
- conversion constructor
- dynamic_cast
- this call
- return by reference
- std::cout
- std::vector
- suffix return type
- C++
- new&delete
- delete function
- discord bot
- virtual function table
- increment operator
- constructor
- c++ multi chatting room
- Today
- Total
목록System Programming (7)
I'm FanJae.
1. 컴퓨터 구조의 접근 방법 1-1. 컴퓨터를 디자인 하자- 여기서 디자인할 요소는 CPU를 의미한다.- 실제로 존재하는 컴퓨터를 디자인 하는게 아닌 가상의 컴퓨터를 디자인 한다고 생각해보자.- 일반적으로 컴퓨터(CPU) 디자인은 레지스터와 명령어에 대한 디자인이다.- CPU를 디자인 하기 위해서는 H/W Logic 전문가, Algorithm 전문가, Interface 전문가, 컴퓨터 구조의 특성을 고려할 수 있는 프로그램 전문가 등이 참여한다. 명령어 : 프로그래밍 언어로 프로그래밍한 것을 컴파일 했을때 번역되어 나오는 명령어들의 집합명령어의 구성에 따라서 레지스터 셋이 결정되서 레지스터 셋이 나와야 H/W 구성이 나올 수 있다. 1-2. 레지스터 디자인의 핵심① 레지스터를 몇 비트로 구성할 것인가?..
1. 64비트 기반 프로그래밍- 64비트 시스템을 고려한 프로그래밍으로 자료형에 대해서 고려해야 한다. 1-1. LLP64 vs LP64운영체제모델charshortintlong포인터WindowsLLP641바이트2바이트4바이트4바이트8바이트LinuxLP641바이트2바이트4바이트8바이트8바이트- 핵심은 64비트에서는 포인터가 8바이트로 표현된다.- 또한, Linux의 경우 long은 8바이트로 표현된다는 차이가 있다. 1-2. 64비트와 32비트 공존의 문제점- 데이터 손실의 문제#include int main(void){ int arr[10] = {0, }; int arrVal = (int) arr; // 데이터 손실이 발생할 수 있다. printf("pointer : %d \n", arr..
1. 64비트와 32비트의 구분 방법1-1. 구분의 두 가지 기준① 한 번에 전송 및 수신할 수 있는 데이터의 크기 (I/O BUS)- 한 번에 송수신 가능한 데이터의 크기에 따라서 32비트 시스템과 64비트 시스템이 나뉜다.② 데이터 처리 능력 (CPU)- CPU는 외부로부터 들어오는 데이터를 처리하는 능력에 대한 차이가 있다. 1-2. 32비트 -> 64비트① 프로그래머 입장에서 볼 때 32비트->64비트- 프로그램으로 표현할 수 있는 범위의 증가- 표현할 수 있는 메모리의 전체 크기- 여기서 고려할 점은 포인터의 크기는 크면 클 수록 좋다는 점과 버스의 크기를 고려해야 한다.② 포인터 크기가 무작정 크면 발생하는 문제점- 포인터의 크기는 128bit로 두었는데 버스를 64bit이면, 주소 정보를 전..
1. MBCS와 WBCS 동시지원1-1. 동시 지원의 필요성과 Windows 스타일 자료형- 프로그램 구현시 여러 측면을 고려해야한다. - 기존 개발된 프로그램과의 호환성 및 사용자 시스템에서 지원하지 못하는 경우로 인해 유니코드로만 동작 시킬 수 없다. typedef char CHAR;typedef wchar_t WCHAR;#define CONST const;typedef CHAR * LPSTR;typedef CONST CHAR * LTCSTR;typedef WCHAR * LPWSTR;typedef CONST WCHAR * LPCWSTR;- Windows에서는 typedef 키워드를 통하여 몇몇 기본 자료형에 Wind..
본 내용은 뇌를 자극하는 윈도우즈 시스템 프로그래밍(윤성우 저) 책을 보고 정리한 내용입니다.개인이 학습한 내용을 정리할 목적으로 게시한 것으로 책의 상세한 내용은 직접 구매하여 확인을 부탁드립니다. 1. 문자셋(Character Sets)의 종류와 특성① SBCS(Single Byte Character Set)- 문자를 표현하는데 1바이트를 사용한다.- 아스키 코드는 SBCS의 종류 중 하나이다.② MBCS(Multi Byte Character Set)- 문자를 표현하는데 있어서 동일한 바이트 수를 적용하는 것이 아닌, 다양한 바이트 수를 사용해서 멀티다.- 한글은 2바이트, 영문은 1바이트를 사용한다.- 우리나라의 경우 MBCS를 기반으로 문자를 표현한다.- 안정성의 문제가 발생할 수 있음.③ WB..
1. 프로그램의 실행파일의 생성 과정- 일반적으로 CPU를 디자인 하는 개발자는 명령어 체계도 디자인한다.- 0011, 0010, 0100, 0101 등과 같이 명령어를 구성한 이후, 이 명령어에 각각의 이름을 넣어준다.- ADD, MIN, MUL 등과 같이 말이다.- 이러한 방식의 프로그래밍이 어셈블리 프로그래밍이다. ① 전처리기에 의한 치환작업- C,C++에서 #으로 시작하는 지시자- #include, #define 등 ② 컴파일러에 의한 번역- 단계 1에서 전처리 작업이 일어나도 여전히 C언어로 구성되어 있다.- 보통 많은 컴파일러가 중간 코드에서 어셈블리 코드를 생성한다. ③ 어셈블러에 의한 바이너리 코드 생성- 어셈블러가 이러한 어셈블리 코드를 받아서 바이너리 코드(기계어 코드)로 변환한다.- ..
본 내용은 뇌를 자극하는 윈도우즈 시스템 프로그래밍(윤성우 저) 책을 보고 정리한 내용입니다.개인이 학습한 내용을 정리할 목적으로 게시한 것으로 책의 상세한 내용은 직접 구매하여 확인을 부탁드립니다. 1. 시스템 프로그래밍의 이해와 접근 1-1. 시스템(컴퓨터 시스템)이란?- 일반적으로 개발자들이 얘기하는 시스템이란, 하드웨어뿐만 아니라 운영체제를 포함한다. 1-2. 시스템 프로그래밍이란?- 컴퓨터 시스템을 활용하는 소프트웨어를 개발한다.- 개발자들이 만드는 소프트웨어(응용 소프트웨어)에는 시스템 프로그래밍 요소가 포함된다.- Windows 운영체제 자체의 기능을 십분 활용하는 프로그래밍 1-3. 응용 소프트웨어 개발과의 차이점- 즉, 응용 소프트웨어의 개발을 위해서는 우리가 구현하지 않더라도, 시스템..