2

objdump를 사용하여 32 비트 Linux에서 일부 ELF 파일을 디스 어셈블합니다.분해 코드에 "의미가없는"메모리 슬롯이있는 이유는 무엇입니까?

asm 파일은 Intel 형식입니다. 분해 파일에서

, 나는 몇 가지 메모리 슬롯 아래와 같이주의 사항 :

80483ed:  c7 44 24 18 07 00 00 mov DWORD PTR [esp+0x18],0x7 
80483f4:  00 
80483f5:  c7 44 24 1c 0c 00 00 mov DWORD PTR [esp+0x1c],0xc 
80483fc:  00 
80483fd:  c7 44 24 20 01 00 00 mov DWORD PTR [esp+0x20],0x1 
8048404:  00 
8048405:  c7 44 24 24 fe ff ff mov DWORD PTR [esp+0x24],0xfffffffe 
804840c:  ff 

원래 조립 파일은 다음과 같습니다

mov  DWORD PTR [esp+24], 7 
mov  DWORD PTR [esp+28], 12 
mov  DWORD PTR [esp+32], 1 
mov  DWORD PTR [esp+36], -2 

사람은 80483f4을 "같은 메모리 주소를 무엇을 말해 줄 수 ","80483fc "?

이 문제는 메모리 정렬과 관련이 있습니까?

감사합니다.

+2

'objdump' 명령 줄에'-w'를 추가하십시오. –

답변

5

이는 이전 행의 피연산자 중 일부입니다. "즉시"(상수) 숫자는 32 비트로 인코딩됩니다. 그래서 0x07은 4 바이트를 차지합니다 : 07 00 00 00. 사용하지 않도록 설정하는 것은 무엇이든지 다른 행의 마지막 바이트를 보여줍니다.

+0

오 .... 알았어 ... 고마워 .... – computereasy