jun-wiki

View My GitHub Profile

Posts (Latest 10 updated) :
Read all
Contents:
  1. 2.1.2    데이터의 크기
  2. 2.1.3   주소지정과 바이트 순서



csapp 타임~

csapp 타임~

오늘은 csapp 요약 할 거다

뭐가 중요할지 몰라서

최대한 다 요약하려고 했는데

걍 내가 보기에 중요한 개념만 요약하기로 마음먹었다

어떤 명령어로 뭐 어쩌고 저쩌고

그걸 어캐 다 아냐?

아는 사람도 있겠다만

1회독에 그거 다 알면

책 안보고도 알 놈이니

제외하겠다


2.1.2    데이터의 크기

모든 컴퓨터엔 워드 크기 (포인터 데이터1의 명목상 크기) 존재

워드 크기에 의해 가상 주소 공간의 최대 크기 정해짐

그리고 최근 컴퓨터 산업은
32비트 워드 크기에 64비트 워드 크기로 전환됨

32비트 머신용은 64비트에서도 작동
그치만 64비트 용은 64에서만 작동

데이터 저장 방법에 따라 쓰이는 바이트 수가 다르기에 발생하는 문제임

그렇기에 고정 크기 데이터 등을 사용함

요점은 서로 다른 머신과 컴파일러2에서도
프로그램이 잘 작동하게 이식성을 고려해야 한다는 거임 ㅇㅇ

2.1.3   주소지정과 바이트 순서

  1. 해당 객체의 주소는 무엇으로 할 것인가?

  2. 메모리에서 바이트들을 어떤 순서로 저장할 것인가?

바이트로 구성된 프로그램 객체를 다룰 땐 이 두가지 규칙을 정해야 한다

사실상 모든 컴퓨터에서 다중 바이트 객체는 연속된 메모리 바이트에 저장된다
그리고 주소는 사용된 바이트들 중 가장 작은 주소값으로 정해진다

바이트들의 저장 순서는 주로 둘 중 하나다
하위 바이트부터 저장하거나
Little Endian (리틀 엔디언3)

아니면 상위 바이트 부터 저장하거나
Big Endian (빅 엔디언3)

주로 보는
x86, x86-64는 리틀 엔디언을 사용한다

모바일:
안드로이드,
ios의 경우도 리틀 엔디언을 쓰고 말이다

어떤 걸 쓰든 상관은 없으나, 일관되게 지켜야 한다

물론, 리틀에서 빅으로 전송하거나 할 경우는
문제가 생길 수 있으니
보내는 측과 받는 측에서
각자 내부 표현으로 변환해야 한다

이와 비슷하게 디스어셈블러라는…
기계언어를 사람이 읽기 쉽게 변환하는 도구 같은 것을 사용할 때에
숫자가 보여지는 방향 등에 영향을 미친다

오늘은 여기까지 하겠다

저녁으로 매운 음식 먹으니

헬파이어를 뒤쪽으로 발사하게 되어서 말이다

백샷하는 아카이누가 되었기에 더 이상 글을 못읽겠다











  1. 특정 데이터가 저장된 메모리의 주소값을 저장하는 변수 

  2. 컴파일이란 어떤 언어의 코드 전체를 다른 언어로 바꿔주는 과정이다. 그리고 이것을 자동으로 수행해주는 소프트웨어를 컴파일러라 한다 

  3. Endian (엔디언): 여러 바이트로 구성된 데이터를 메모리에 저장할 때 바이트의 순서를 결정하는 방식  2