본문 바로가기

프로그래밍10

삽질을 하다가... 디버깅이 어려운 이유는 간단하다. 사람들은 자기가 보고자 하는 것만 보기때문이다. 아는 것만 보려하기 때문이다. 코드의 에러를 예측할 때는 자기가 아는 만큼 안에서 예측을 하게 된다. 고로 경험과 지식, 그리고 이 것들을 지혜로 흡수한 사람은 당연히 디버깅을 잘한다. 결론 : 무식이 죄다. ㅋ /* blah blah blah ... ... ... */ BYTE* buf = new BYTE(14); /* blah blah ... ... ... */ delete [] buf; 어제 런타임 에러가 난 버그가 포함된 코드이다. 분명히 delete [] buf; 이 구문에서 런타임 오류가 나는 걸 바로 잡아냈다. 처음엔 후~ 뻔하지 동적으로 할당한 메모리를 초과해서 내가 무슨 짓을 하였구나~. 그런데 난 절대로 .. 2009. 8. 16.
C에서 특정 주소로 점프하기 회사에 아는 선임분이 ARM 교육을 가셔서 부트 로더쪽 코딩으로 뭔가를 실습하는데, 잘 모르겠다고 메신저로 물어보시길 "C에서 특정 주소로 점프 하려면 우찌해야 하냐?" 참고로 부트로더의 역할을 내가 아는데로 간단하게 정리를 해보면 1. 뭔가를 한다 -_- (보통 시리얼 통신(rs-232,)을 통해 커널이미지를 정해진 주소에 다운로드 시키게 된다) 2. 특정 주소(커널 이미지의 시작점)로 점프를 한다. 3. 끝 -_- 역시 .. 내가 아는데로 정리하니 ... 간단하다 -_- . 다시 말해 모르는게 속편하다는 거 ㅋ 아무튼 질문을 받고 내가 처음에 바로 떠올린건 인라인 어셈블리였지만, '어셈은 안돼~' 라는 말에 함수포인터를 써보기로 하였다. 커널(커널함수)의 리턴이나 인자는 없다고 가정하였다. 쉽게 말해.. 2009. 7. 24.
Great Code - 하드웨어의 이해 GREAT CODE(하드웨어의 이해) 카테고리 컴퓨터/IT 지은이 랜달 하이드 (에이콘출판, 2007년) 상세보기 최근에 질러서 보고 있는 책이다. 필자가 말하고자 하는 바는 다음과 같다. HLL(High Level Language)의 컴파일러가 아무리 똑똑하더라도 H/W(혹은 컴퓨터 아키텍처)에 대한 이해도가 부족한 사람이 작성한 코드는 어찌할 수가 없다. 고로 H/W에 대해 이해를 해야 멋진 코드가 나온다. 나같이 무지한 S/W쟁이가 필수적으로 봐야할 책이 아닌가 싶다. 현재는 6장 메모리 구조와 접근이라는 챕터를 읽고 있다. 폰 노이만 아키텍처의 기본적인 컨셉과, 시스템 버스, 클럭, 메모리 구조, 접근에 관한 문제를 얕지 않으면서도 알기 쉽게 설명하고 있다. 후다닥 독파해버려야지. +_+; 2009. 7. 3.
오묘한 포인터와 배열의 세계 눈컴파일 및 실시간 두뇌 실행을 해봅시다. 거두절미 하고 아래의 소스는 과연 실행이 잘 될까? #include using namespace std; int main() { char str2[] = "abc"; str2[0] = 'A'; cout 2009. 5. 25.