CISC 구조 : 리틀엔디안( 인텔x86, 일반적인 PC) 사용
RISC 구조 : 빅엔디안 ( 모토로라 , SPARQ, unix ) 사용
CISC 와 RISC 비교는 이전글을 참조하세요 ( http://dbckdgns0515.tistory.com/entry/RISC-VS-CISC )
장단점을 논할 순 있지만, 어떤게 더 좋다고 말하기는 달걀의 위에서부터 까먹냐 아래서부터 까먹냐 차이처럼 별 의미 없다고 생각됩니다. 각각 용도에 달리 적용될 수 있기 때문이지요.
다음을 살펴보겠습니다.
다음에 0xf0f0 라는 16진수가 있을때 각 구조는 내부적으로 다음과 같이 배열됩니다.
빅엔디안
: 확장성이 좋겠네요. 추가될때마다 뒤에다가 붙이면되니까요. 빅엔디안은 다 쭉 밀어야 겠군요.
우리가 읽게 되는 16진수 0xf0f0 은 앞에 f0가 2^8 ~ 2^15 입니다. 뒤에 f0 는 2^0 ~ 2^7 이구요. 즉 우리들은 일반적으로 빅엔디안과 같은 형식으로 16진수를 읽고있습니다. 0x1234하면 2^8 ~2^15 승의 범위가 0x12 , 2^0 ~ 2^7 는 0x34 이런식으로요.
그래서 우리가 MBR영역의 끝을 알리는 시그니처를 0x55aa라고 읽어도 리틀엔디안을 사용하는 시스템에서 파일시스템 덤프를 떠보면 MBR 맨 마지막에 AA 55 이렇게 나오는 것입니다. 읽을 땐 0x55aa라고 읽죠.
따라서 위에 예에서 빅엔디안으로 저장되는 시스템에서는 눈에 보이는 그대로 0xf0f0 읽으면 되지만,
리틀엔디안으로 저장되는 시스템에서는 순서를 1byte단위로 거꾸로 읽어야 합니다.
쉽게 생각해서 거꾸로 읽는다고 생각하는 것이지, 사실은 이렇게 생각하셔야 정확합니다.
리틀엔디안 시스템에 0x123456 이 저장되어 있으면 역으로 읽는다고 생각해서 0x563412 이렇게 하는것이 아니라, 리틀엔디안의 구조에 저장될 때 높은 승수의 값들은(56)은 뒤에 있는데 읽을 땐 앞에 있는게 큰 수입니다
그냥 역으로 읽지말고 배치가 이렇게 된다는 걸 알아둡시다.
RISC 구조 : 빅엔디안 ( 모토로라 , SPARQ, unix ) 사용
CISC 와 RISC 비교는 이전글을 참조하세요 ( http://dbckdgns0515.tistory.com/entry/RISC-VS-CISC )
장단점을 논할 순 있지만, 어떤게 더 좋다고 말하기는 달걀의 위에서부터 까먹냐 아래서부터 까먹냐 차이처럼 별 의미 없다고 생각됩니다. 각각 용도에 달리 적용될 수 있기 때문이지요.
다음을 살펴보겠습니다.
다음에 0xf0f0 라는 16진수가 있을때 각 구조는 내부적으로 다음과 같이 배열됩니다.
빅엔디안
: 확장성이 좋겠네요. 추가될때마다 뒤에다가 붙이면되니까요. 빅엔디안은 다 쭉 밀어야 겠군요.
우리가 읽게 되는 16진수 0xf0f0 은 앞에 f0가 2^8 ~ 2^15 입니다. 뒤에 f0 는 2^0 ~ 2^7 이구요. 즉 우리들은 일반적으로 빅엔디안과 같은 형식으로 16진수를 읽고있습니다. 0x1234하면 2^8 ~2^15 승의 범위가 0x12 , 2^0 ~ 2^7 는 0x34 이런식으로요.
그래서 우리가 MBR영역의 끝을 알리는 시그니처를 0x55aa라고 읽어도 리틀엔디안을 사용하는 시스템에서 파일시스템 덤프를 떠보면 MBR 맨 마지막에 AA 55 이렇게 나오는 것입니다. 읽을 땐 0x55aa라고 읽죠.
따라서 위에 예에서 빅엔디안으로 저장되는 시스템에서는 눈에 보이는 그대로 0xf0f0 읽으면 되지만,
리틀엔디안으로 저장되는 시스템에서는 순서를 1byte단위로 거꾸로 읽어야 합니다.
쉽게 생각해서 거꾸로 읽는다고 생각하는 것이지, 사실은 이렇게 생각하셔야 정확합니다.
리틀엔디안 시스템에 0x123456 이 저장되어 있으면 역으로 읽는다고 생각해서 0x563412 이렇게 하는것이 아니라, 리틀엔디안의 구조에 저장될 때 높은 승수의 값들은(56)은 뒤에 있는데 읽을 땐 앞에 있는게 큰 수입니다
그냥 역으로 읽지말고 배치가 이렇게 된다는 걸 알아둡시다.
마찬가지로 이렇게 배치됩니다
리틀엔디안을 사용하는 시스템에 저장된 0x12345678 은 읽을때 0x78563412 라고 표시하게되는입니다.
'Forensic & 침해사고대응' 카테고리의 다른 글
컴퓨터 부팅 프로세서 (0) | 2011.08.24 |
---|---|
컴퓨터 포렌식을 위한 하드웨어 구성 (0) | 2011.08.24 |
RISC VS CISC (0) | 2011.08.24 |
[펌] 리틀엔디안 & 빅 엔디안 (0) | 2011.08.24 |
메모리 덤프하기 (0) | 2011.08.22 |