지난 1주일 노력 많이 했다. 20개 이상되었던 것을 모두 답변처리 혹은 다음 버전에 픽스하여 넣도록 수정하여 2 개로 줄이다. 오늘은 휴일이거든, 무슨 일이었냐고? 팀전체는 75개에서 25개로 줄이게 되었는데, 모두 묘한 경쟁체제 덕이 아닌가 싶다. ^^; 버그 트래킹 시스템의 TODO list를 한 시간에 한 번씩 메일로 날아 오도록 프로그램해놓았거든. 다른 글에서 소프트웨어 번역에서 경쟁의식을 느껴가며 (혼자서만) 일하는 것을 소개한 적이 있는데, 인간이 그런 것인지 아니면 내 성향이 그런 것인지, 꽤 건전한 성장 동력이 되는 것 같다. 주체할 수 없는 어떤 힘이 있을 때, 그것을 막는 것 보다는 잘 길들일 수 있고 힘이 분출 될 수 있는 길을 만드는 것이 현명한 일이다. 내 안에 있는 힘들의 종류..
이번에도 지난번 글과 같이 간단한 함수의 디스어셈블을 통하여 함수호출시에 일어나는 일들을 살펴보고자 한다. 참고로 이와 같은 학문(?)의 범주는 다음과 같은 위치에 있다. * C 언어 표준 스펙 * intel x86 CPU의 System V Application Binary Interface * gcc의 구현 System V ABI 를 검색어로 찾아 보면 원하는 글을 찾을 수 있을 것이다. void func6( char x1, char x2, char x3) { x1 = 1; x2 = 2; x3 = 3; } struct _p { int a1; int a2; int a3; }; void func7( struct _p p1, int p2 ) { p1.a1 = 1; p1.a2 = 2; p1.a3 = 3; p2..
C 언어는 전통적으로 다음과 같은 방식으로 실행파일이 만들어진다. (1) 편집기를 통한 소스 작성 (2) 전처리기를 통해 소스로부터 매크로 확장 및 주석 제거 (3) 컴파일러를 통해 전처리된 코드로부터 어셈블코드 생성 (4) 어셈블러를 통해 어셈블코드로부터 목적파일 생성 (5) 링커를 통해 목적파일들 (라이브러리 포함)의 결합에 의한 실행파일 생성 이 중에서 (3) 번과정을 재미로 살펴보면서 어떤일들이 일어나는지 알아보고자 한다. 테스트한 환경은 다음과 같다. * x86 CPU * gcc 3.3.2 테스트 코드는 다음과 같다. void func1() { } void func2( int x ) { x = 0; } int func3() { return 7; } void func4() { int y; y = ..
- Total
- Today
- Yesterday
- Tattertools plugin
- 식물
- 오픈소스
- macosx
- 퀴즈
- BlogAPI
- 덴드롱
- OpenID
- 구근
- 벤자민
- perl
- SSO
- 킹벤자민
- VIM
- Subversion
- 커피
- tattertools
- TCP/IP
- 수선화
- MySQL
- Linux
- nodejs
- ssh
- 대화
- SVN
- 디버깅
- JavaScript
- 클레로덴드럼
- writely
- url
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |