64비트와 32비트 처리에 관한 질문...
글쓴이: pshun / 작성시간: 수, 2004/04/07 - 4:27오후
커널 프로그래밍에 관한것만 질문해야하는거라면 쓸데없는 질문올려서 죄송합니다. 그러나 마땅히 질문 드릴때가 없어서...
프로그래밍에 관한 초자입니다..
다름이 아니라.. 요즘 amd에서 64비트 머신이 나오지 않았습니까?
그런데 이놈에 깔린 리눅스에서(뭐 아니면 일반 64비트 유닉스용도 그렇고요..) 프로그램돌릴때 64비트 옵션을 준다는 말이,
real 혹은 integer 를 8바이트로 만들어서 계산하겠다는 말인가요?
그러니까 컴파일 옵션에 64비트 옵션을 주는것이나 data형식을 8바이트로 선언하는것이나 동일한건가요?
근데 간혹 32비트 개인 PC에서 real 이나 ingteger값을 8바이트로 선언하고 돌릴때가 있더라고요... 그래도 관계없이 돌아가는건가요?
만약 이것에 차이가 있다면(선언하는것만이 data의 형식을 결정하는것이라면) 일반 32비트 용에서 real이나 integer값을 8바이트로 선언한 놈이나
64비트에서 real이나 integer값을 8바이트로 선언하여 얻어낸 것이나, 자료의 값이 동일한건지요?
아직 이것에 대한 명확한 개념이 안서는 군요.. 누구 고수님들의 답변을 기다립니다...
Forums:
int 를 4바이트로 하던 8바이트로 하는 것은 컴파일러가 용쓰는 부분이
int 를 4바이트로 하던 8바이트로 하는 것은 컴파일러가 용쓰는 부분이구요~
CPU는 환경을 만들어주는 것이라고 보면 되겠습니다.
그러니까... 메모리를 2^64bit 까지 어드레싱할수 있어서 메모리를 4G 이상 사용할수 있다던가... 그런 것이죠.
:)
컴파일러가 어떻게 처리하냐는 것에 달린 문제입니다.32비트에서 6
컴파일러가 어떻게 처리하냐는 것에 달린 문제입니다.
32비트에서 64비트형을 다루려면 컴파일러가 그걸 열심히 쪼개서 처리를 해줍니다.
컴파일할때 '이 컴퓨터는 64비트니까 64비트 인스트럭션을 써라!' 라고 하면 오오~ 하면서 64비트 만세!!를 외치는 것이지요.
당연히 32비트 머신에서 64비트형을 쓰면 쪼개서 처리하기 때문에 상당히 느려집니다. -ㅅ-
다시질문올립니다....
먼저 답변에 감사하며...
그렇다면 32bit 머신에서 integer 와 real을 8byte 로 선언하여 열심히 돌린 값이랑
64bit 머신에서 integer 와 real을 8byte로 선언하여 돌린 값은 같다고 봐야 합니까?
그리고 unix 64bit머신에서 돌린결과와 linux 64 bit 머신에서 돌린결과값이 다르다면 그건 컴파일러 때문인가요?
한번더 답변을 기다립니다...
Re: 다시질문올립니다....
그런 경우, 일반적으로 값은 같습니다.
실수값은 대부분의 FPU 가 IEEE 754 표준을 따르는데, 그것을 따르지
않은 FPU 또는 실수 연산 에뮬레이션 라이브러리라면 결과가 다를 수도
있습니다.
즉, 컴파일러 때문이라기보다는 값을 표현하는 형식(format)의 차이에
의해 결과가 다를 수 있습니다. 그 외의 이유라면 대부분 하드웨어나
소프트웨어 (컴파일러 또는 응용 프로그램)의 버그입니다.
Orion Project : http://orionids.org
댓글 달기