입니다 소스 코드 내가 가진 :왜 메모리에 저장된 데이터가 반대로되어 있습니까?
section .data
msg: db "pppaaa"
len: equ $
section .text
global main
main:
mov edx,len
mov ecx,msg
mov ebx,1
mov eax,4
int 0x80
을 그리고 나는이 코드를 디버깅 할 때 나는 볼 수 있습니다 :
이(gdb) info register ecx
ecx 0x804a010 134520848
(gdb) x 0x804a010
0x804a010 <msg>: 0x61707070
(gdb) x 0x804a014
0x804a014: 0x00006161
"70"여기에 문자 'P'와 '61'문자를 나타냅니다 분명히.
내가 혼란스러워하는 이유는 0x804a010 위치의 데이터가 0x61707070 (appp)이고 0x804a014에서 4 바이트 앞으로 이동한다는 것입니다. 데이터는 --aa입니까?
첫 번째 위치는 (pppa), 두 번째 위치는 (aa--)가 표시됩니다. 왜 이런 경우입니까?
리틀 엔디안 환경에서 작업 할 가능성이 큽니다. 바이트는 "다른 방법으로"저장됩니다. [참조하십시오] (http://en.wikipedia.org/wiki/Endianness) – lared
@lared 하이 엔디안으로 전환하려면 어떻게해야합니까? –
@KorayTugay : 당신은하지 않습니다 (대부분의 아키텍처는 불가능하며 모든 프로그램이 중단 될 수 있습니다). 당신이하는 일은 32 비트 뷰에서 바이트 배열을 보는 것입니다. 데이터를 일치 시키려면 바이트 중심의보기를 사용하십시오. "위치 0x804a010의 데이터가 0x61707070입니다."라고 말했을 때 실제로 잘못되었습니다. 실제로 위치 0x804a010의 데이터는 0x70입니다. –