문자열과 엔디안
변수 선언 (한개 이상의 값)
section .data
a db 0x11, 0x11, 0x11, 0x11
위 코드 처럼 a에 값 하나가 아닌 연속된 값을 지정 할 수 있다.
문자열 변수
section .data
msg db 'Hello World', 0x00
위 코드를 메모리상에서 확인해 보면 변수 msg의 값은
0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x0
임을 확인 할 수 있다.
아스키코드 매칭시 Hello World가 되고 마지막 0은 문자열의 끝을 알려주는 값이다.
실제로 코드상
section .data
msg db 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x0
로 선언해도 같은 결과임을 확인 할 수 있다.
리틀엔디안
리틀엔디안을 사용하는 시스템에서는 데이터가 반대로 저장된다.
section .data
b dd 0x12345678
위와 같이 선언된 변수 b는 리틀엔디안 방식의 시스템에서
메모리의 낮은주소부터 확인해보면
0x78, 0x56, 0x34, 0x12
순서로 저장 되어 있는것을 확인할 수 있다.
(1바이트 단위로 끊어서 거꾸로 저장)
반대로 빅엔디안 방식의 시스템에서는
0x12, 0x34, 0x56, 0x78
순서로 저장된다.
이기종 시스템간 데이터 전송시 엔디안 방식의 차이로 데이터가 꼬일 수 있으니 주의가 필요하다.
Author And Source
이 문제에 관하여(문자열과 엔디안), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@doidoi88/문자열과-엔디안저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)