16비트 32비트 C언어

MLbioinfo   
   조회 4260   추천 1    

옛날 16비트 컴퓨터 쓰던 시절의 소스코드를 32비트에서도 실행되도록 하고 싶습니다.
저는 비쥬얼스튜디오로 컴파일만 다시 하면 될줄 알았는데....


고친 부분은 대충 다음과 같습니다.

1. float huge a[13000];
여기서 huge가 무슨뜻인가요? 지워야 컴파일이 됩니다.

2. 배열 값을 불러올 때 floor이 double로 뱉어내니까 a[8000+ floor(b)] 같은 것들을 a[8000+ (short)floor(b)]로 바꿔줘야 합니다.
옛날엔 이런게 그냥 통과됐나 보네요;;

3. 주로 int로 선언되어 있는 변수들을 short 형으로 변경해줘야 합니다.
3가지 중에서 제일 특이한 건데...
int로 하면 결과가 엉망인데, short로 다 바꿔줘야 옛날 결과와 비슷하게 나오네요.. (그래도 결과는 조금 다르지만..)


16비트에서 잘 작동하던걸 32비트로 다시 컴파일할 때 고려할게 뭐가 있을까요?

짧은글 일수록 신중하게.
서형호 2017-05
정말 오랫만에 들어봅니다. huge.
1. 메모리 모델에 관해서는 이 링크를 보시면 좋을 것 같습니다.
http://www.equestionanswers.com/c/near-far-huge-pointer.php

2. DOS에서는 int 사이즈가 16비트였습니다. 32비트 유닉스 시스템에서는 int가 32비트였구요.
64비트에서도 대부분 4바이트인 것으로 알고 있습니다. macOS Sierra에서는 4바이트네요.
https://stackoverflow.com/questions/11438794/is-the-size-of-c-int-2-bytes-or-4-bytes

3. 2번과 같은 이유입니다.
     
MLbioinfo 2017-05
답변 감사합니다 ^^
겪고 있는 나머지 문제는 대부분 double <-> float 문제로 보이네요.


QnA
제목Page 4093/5716
2015-12   1732186   백메가
2014-05   5199610   정은준1
2016-07   6830   NeOpLE
2014-04   3885   빠시온
2022-04   1972   icalux93
2017-03   4523   isaiah
2017-03   4350   전산oa
2016-04   5594   맹귀
2015-04   4514   나파이강승훈
2016-06   7592   서쪽하늘로
2016-06   4834   용기
2017-05   4261   MLbioinfo
2017-06   4448   마스터치프
2017-06   3086   김도형
2017-07   9726   메가날백
2017-07   3581   마통
2017-07   3374   사랑하라
2019-05   2822   센치
2017-01   5270   김건우
2019-06   2922   루비아빠
2019-06   2807   잘하자
2017-04   3670   KarisTuck