gdb 중 메모리구조 궁금증(코드영역인지 데이터영역인지)
조회수 627회
if문이 있는 코드입니다. 저는 저 0xdeadbeef 라는 값이 바뀌면 안되는 "상수"라고 생각해서 데이터영역에 있을것이라고 생각했습니다.
그런데 gdb를 해보니
어셈블리코드는 코드영역에 있잖아요?
위의 이미지로 보면 0xdeadbeef 는 코드영역 저장되어있다고 보는게 맞는건가요?
0xdeadbeef 라는 값이 코드영역에 있는지, 데이터영역에 있는지 궁금합니다.
1 답변
-
cmp 라는 명령어의 operand 값이 0xdeadbeef 값이라는 겁니다.
binary 레벨에서도, literal 하게 박혀있는 것입니다.
https://www.felixcloutier.com/x86/cmp
가서 보시면. CMP EAX, imm32 해당하는 명령어를 확인할 수 있습니다.
imm는 immediate value의 약어입니다.
예. 코드영역에 오퍼랜드 값으로 박혀있습니다.
댓글 입력