본문 바로가기
반응형

[Public] 프로그래밍/C4

[C] 구조체 비트필드 구조체를 선언할 때 우리는 일반적으로 다음과 같이 선언을 한다. 이름을 생략하면서 typedef 를 이용하면서 일반적으로 우리는 구조체를 선언할 때 일반적으로 변수를 이용하여 선언 하였다. 변수는 일반적으로 가장 작은 변수가 char형 1 BYTE 이다. 그러면 어떻게 Bit 단위로 선언을 할 수가 있을가 ? 답은 자료형 변수명 : 비트크기 ; (즉 변수 선언 후 뒤에 : 을 붙여주고 비트크기를 선언하는 것이다.) 근데 이걸 선언하는 것은 알겠는데 어디에 사용을 하죠? 일반적으로 구조체 비트필드의 적용사례를 보면 1. 컴퓨터 내부 칩들의 레지스터를 프로그래밍 할 때 사용한다 2. 데이터 베이스의 자료의 크기를 작게 할 때 사용한다. 3. 기타 프로그램 작성시 사용한다. 그럼 말로만 하지 말고 예제로 하나.. 2011. 7. 28.
[C] 가변 인자 가변인자에 대해서 알아봅시다. 문제를 해결하려고 할 때 소스를 보면 쉽게 이해를 할 수 있기 때문에 이론 보다는 우리는 소스를 좋아한다. 어느날 타인의 소스를 보다가 다음과 같은 것을 접했다. 이것은 함수 부분인데 void Sum(int a, ...) 잉 ㅡ,.ㅡ " ... " 점,점,점 이거 멍미 이거 컴파일 오류 아닌가 ? 하는 생각이 들수 도 있다. 하지만 이것은 정규문법 ... 너는 누구니? 내 이름은 " 가변인자 " 나는 인자의 개수를 임의로 설정할 수 가 있지 몸 색이 변화하는 카멜레온 을 물리칠 수 있지 ! 재미 없었으면 죄송 ㅋ 가만 ... 너 어디서 많이 봤는데 그렇다 printf, scanf 등등 안에 들어간다. 그럼 printf 내부 구조는 가변인자로 되어 있구나 그럼 수는 어떻게 구.. 2010. 4. 30.
ESP 와 EBP 함수를 호출 할때 어셈블리언어를 보면 함수의 크기보다 4 + 4 바이트가 더 붙는 것을 알 수 있다. 어셈으로 접근해보면 그게 무엇인지 알수가 있다. EBP에 대하여 알아 보자 ESP (Extended Stack Pointer) - 현재 스택의 가장 위에 들어있는 데이터를 가리키고 있는 포인터 - Intel CPU에서는 스택이 거꾸로(리틀엔디언) 자라므로 데이터가 하나 PUSH 될때마다 ESP 값은 감소 - ESP는 다음 번 DATA를 Push 할 위치가 아니라 다음에 POP 했을 때 뽑아낼 데이터의 위치를 가리 킴 EBP (Extended Base Pointer) - 현재 스택에 가장 바닥을 가리키는 포인터 - 새로운 함수가 호출될 때마다 EBP 레지스터 값이 지금까지 사용했던 스택 꼭대기의 위에 위치.. 2010. 1. 25.
[C] getch 함수에서 화살표나 F1 키등등 표현 2009. 10. 12 (月) getch() 함수를 사용하면 키보드의 키값을 아스키 코드로 받을 수 있다. 그런데 화살표나 F1 키를 눌려 보장......... 절망이다.. 2개가 출력된다 F1 키 같은 경우는 0 + @ 화살표 같은 경우는 224 + @ 여기서 앞에 나오는 키는 특수 키인것이다. 보통 스캔코드 (확장키 코드)를 말하는데 이것은 2바이트로 하나는 스캔코드 하나는 아스키 코드이다. 진정 특수 키를 얻기를 원한다면..... 먼저 getch 함수로 받은 키를 224와 0인지를 구별해라 구별한다음 맞다면 다시 한번 getch 함수를 이용하여 아스키 값을 받고 그 값이 무엇인지 판별하면 된다. 한마디로 특수키가 아닌건 getch 한번 쓰고 특수키는 getch 두번 써라 getch 함수 정보는 Wi.. 2009. 10. 12.
반응형