AVX 명령어 세트 및 개발 방법

💡 Quotation 고급 벡터 확장(Advanced Vector Extensions,약어:AVX)은 2008년 4월 춘계 인텔 개발자 포럼에서 발표된 x86 명령어 집합의 확장으로 SIMD명령어 집합중의 하나이다. Wikipedia 💡 TIps 단일 데이터 복수 데이터 단일 명령어 SISD SIMD 복수 명령어 MISD MIMD 해당 글에서 설명할 AVX 명령어 셋은 SIMD에 속합니다! CPU-Z 에서 본인이 사용하는 프로세서가 사용할 수 있는 명령어 집합을 볼 수 있는데, 그 중 AVX는 큰 데이터 덩어리를 처리할 수 있는 기술로 적은 연산으로 빠르게 처리가 가능하게 합니다. ...

2024년 04월 17일 · 2 min · 384 words · JongBin

C++ Socket 프로로그래밍 [POSIX]

💡 Quotation 네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓은 RFC 147에 기술사항이 정의되어 있다. wikipedia 소켓은 운영체제에 종속되어 있어 플랫폼마다 사용하는 방법이 아주 조금 다릅니다. 이 글에서는 유닉스 또는 리눅스에 사용되는 POSIX1) Socket 을 간단하게 소개하고 프로그래밍 방법을 소개합니다. ...

2023년 06월 18일 · 3 min · 514 words · JongBin

C++ 가변 길이 구조체

💡 Quotation Flexible array members were officially standardized in C99. In practice, compilers (e.g., GCC, Microsoft’s) provided them well before C99 was standardized. Flexible array members are not officially part of C++, but language extensions are widely available. 소켓 프로그래밍 중 가변 길이의 데이터를 보낼 방법을 찾다가 발견하게 되었습니다. 위 글처럼 C99에 공식적으로 표준화가 되었으며 C++ 에서는 공식적이지는 않지만 사용할 수 있습니다. 메모리에 연속된 공간으로 할당하며 통신할 때 유용하게 사용될 수 있습니다. ...

2023년 06월 10일 · 2 min · 333 words · JongBin

fmt 라이브러리로 C++ 콘솔 로거 작성하기

프로그램의 로그를 쓰기 위해 보통 Log4j, spdlog… 등 로거 프레임워크를 사용합니다. 사용하기 간편하며 강력한 기능을 제공합니다. 하지만 저는 fmt를 이용하여 간단히 사용할 수 있는 콘솔 로거를 작성해보려고 합니다. 😎 쉽고 간단한 길 놔두고 이상한 길 가기 ⚠️ Warning 상용 프로그램에서 아래와 같이 로그를 사용한다면 스레드로 인한 작동 오류가 있을 수 있습니다. fmt를 사용해보기 위해 간단히 작성된 것이므로 로거 프레임워크를 사용하기를 권장합니다. fmt 💡 {fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams. ...

2023년 05월 27일 · 3 min · 577 words · JongBin

C++ 예외 처리 try catch throw

C 언어와 다르게, C++은 애러를 핸들링할 수 있는 try-catch문을 제공합니다. 비교 조건문 if 예외 처리 try-catch 핸들링 return 값의 구분으로 핸들링 throw 를 사용하여 catch로 분기 및 예외 처리 단점 return 자료형에 종속적 반드시 try-catch 블럭에서 처리 조건문은 반환 값의 구분으로 핸들링하기 때문에 반환하는 자료형에 종속적입니다. 예를 들어 char getSome()이라는 함수에서 예외 처리를 하고 싶은데 char형으로 어떻게 구분을 지을 수 있을까요? NULL값을 줄 수도 있지만 정말 NULL을 반환한게 정상적인 흐름이라면 오류가 아닐텐데 말이죠! ...

2023년 05월 12일 · 4 min · 754 words · JongBin