먼저 AT&T 와 INTEL 둘의 문법 차이를 설명해보자면
mov $esp, $edx // EDX 에 ESP 를 복사한다. (A<-B)
mov edx, esp // EDX 를 ESP 에 복사한다. (A->B)
이 둘이 서로 같은 뜻을 의미한다. 대체적으로 intel 문법이 특수문자를 사용하지 않고 해석방법도 매우 간단하다.
그래서 올리디버거를 사용하는 초보자들은 GDB 로 넘어오면 어려움을 호소하는데 이를 해결하는 방법이 있다.
GDB 를 실행하고 다음과 같은 명령어를 입력한다.
(gdb) set disassembly-flavor intel
종료하고 다시 실행하면 원래 AT&T 문법으로 돌아오는데
다음 명령어를 실행하면 intel 문법으로 고정된다.
(gdb) set disassembly-flavor intel
(gdb) q
$echo "set disassembly-flavor intel" > ~./gdbinit
$cat ~/.gdbinit
위 처럼 입력해주면 계속 intel 문법으로 확인할 수 있다.
'스터디 > system' 카테고리의 다른 글
[Chapter 1] 리눅스 시스템 프로그래밍 시작 (0) | 2011.08.21 |
---|---|
리눅스 심볼릭링크와 하드링크 (0) | 2011.08.21 |
[GDB-Analysis] GDB 바이너리 디버깅 3 (0) | 2011.08.18 |
[GDB-Analysis] GDB 바이너리 디버깅 2 (0) | 2011.08.17 |
[GDB-Analysis] GDB 바이너리 디버깅 1 (1) | 2011.08.17 |