문자와 엔디안

·2023년 4월 17일
0

C++

목록 보기
4/5

📌문자


section .data
	a db 0x11, 0x11, 0x11, 0x11 ;[0x11]

1byte 0x11 연속으로 a에 넣는다


📌아스키코드


문자를 나타내는 것
문자열의 끝을 나타내기 위해서 0x00 붙여줌

PRINT_STRING msg

section .data
	msg db 'Hello World', 0x00

msg부분을 긁어와서 아래와 같이 만들어도 똑같이 Hello World가 뜬다

PRINT_STRING msg

section .data
	msg db 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x0

📌엔디안


숫자가 메모리에 저장될 때 저장하는 방법

b dd 0x12345678

빅엔디안

넣은순서대로 저장
우리눈에 좀 더 직관적인

리틀엔디안

뒤집어서 저장
대부분의 데스크탑 환경에서는 리틀엔디안 방식으로 동적

나중에 서버 데이터 전송할 때 엔디안 방식을 미리 정해놔야한다.

장단점

0x12345678

->메모리 주소증가
빅엔디안방식 0x12 0x34 0x56 0x78
리틀엔디안방식 0x78 0x56 0x34 x012

리틀엔디안

캐스팅에 유리하다(추출에 유리함)
78만 남기고 나머지를 남긴다고 가정(캐스팅)
(데이터 사이즈 큰거에서 작은 사이즈로 변환)
첫번째 주소만 받아오면된다

빅엔디안

숫자비교에 유리
0x12345678
0x45123411
가장 큰 숫자가 첫번째 주소에 있으니까 비교에 편리


참고자료

Part1: C++ 프로그래밍 입문
섹션 1.어셈블리 언어 입문

profile
개인공부저장용(하루의 기록)

0개의 댓글