시스템 프로그래밍 - Data Representation 분석 및 비교
- 최초 등록일
- 2015.01.14
- 최종 저작일
- 2014.04
- 8페이지/
한컴오피스
- 가격 2,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
ㅅㄱㄱ대학교 ㅇㅇㅇ교수님 시스템프로그래밍 첫번째 과제 레포트입니다. (고득점)
● 기기에서의 byte ordering (Endianness)
● Integer type representation
● Pointer type과 String
위 세가지에 대해 직접 프로그래밍 및 분석해보는 과제였습니다.
OS와 기기별로 Little endian인지 big endian인지 분석했습니다.
또한 여러가지 타입(string, positive integer, negative integer, normalized float value, denormalized float value)에 대해 각각 테스트했습니다.
목차
1. 과제설명
2. 이론적 배경
3. 실험방법
1) Linux
2) 안드로이드
4. 결과분석
5. 후기
6. 참고문헌
본문내용
1. 과제설명
R.Bryant와 D.O'Hallaron의 저서인 Computer Systems: A Programmer's Perspective (2nd Edition) 42쪽에 나오는 show_byte 프로그램 코드를 이용하여 여러 기기에서 다음을 출력해보고 분석해본다.
- 기기에서의 byte ordering (Endianness)
- nteger type representation
- Pointer type과 String
2. 이론적 배경
Endianness
Endianness는 한번에 여러 바이트를 사용하는 data type을 사용할 때 메모리에 데이터를 저장하는 순서라고 할 수 있다.
Big-endian 방식은 가장 첫 번째 비트인 Most significant bit에 가장 작은 주소의 값을 넣는 방식이다. 반대로, Little-endian 방식은 MSB에 가장 큰 주소의 값을 넣는 방식이다. 예를 들어, 32bit integer 0x12345678을 저장할 때 Big-endian 방식은 다음과 같은 순서로 저장한다.
<중 략>
2) positive int & float
pointer 변수의 값과 int, float형의 값들이 모두 byte의 순서가 반전되어 출력되었다. 즉, 실행 환경이 little endian인 것을 확인할 수 있다. 원래의 bit 순서대로 다시 재배열 했을 때, 실행 전 직접 구했던 각 value의 hexadecimal 값과 일치했다. 그리고 int형 변수 이후에 float 변수를 만들었는데, 두 변수의 주소값의 차가 4byte인 것도 확인할 수 있다. (0xbf83b2f4 -> 0xbf83b2f8)
<중 략>
가.Android 환경
이 환경에서는 intel 기반의 cpu가 아니었기 때문에 혹시 big endian을 사용하지 않을까 하는 호기심에 확인해 보았지만 little endian 방식을 사용하고 있었다. Android 환경에서 byte representation을 체크할 때 사용한 어플리케이션은 c4droid이다.
항목별 가.와 다른 점은 크게 없어, 결과 스크린샷만 첨부하고 세부 사항에 대한 설명은 생략하도록 한다
참고 자료
Endianness, wikipedia (http://en.wikipedia.org/wiki/Endianness)
R.Bryant, D.O'Hallaron, Computer Systems: A Programmer's Perspective (2nd Edition)