gcc 출력을 16bit code로 나오게 할려면.

yjcho의 이미지

32bit 코드 말고 16bit 코드로 나오게 할려면 어떻게 하죠?

그리고 출력할때 실행파일포맷으로 옛날에 DOS에 쓰던 EXE파일 포맷으로 출력할 수 있나요?

Fe.head의 이미지

yjcho wrote:
32bit 코드 말고 16bit 코드로 나오게 할려면 어떻게 하죠?

그리고 출력할때 실행파일포맷으로 옛날에 DOS에 쓰던 EXE파일 포맷으로 출력할 수 있나요?

    int integer = -16;
    printf("|%#x|\n", integer);
    printf("|%#hx|\n", integer);
    printf("|%#hhx|\n", integer);

결과
|0xfffffff0|
|0xfff0|
|0xf0|

Quote:

$ man 3 printf

The length modifier
Here, `integer conversion' stands for d, i, o, u, x, or X conversion.

hh A following integer conversion corresponds to a signed char or
unsigned char argument, or a following n conversion corresponds
to a pointer to a signed char argument.

h A following integer conversion corresponds to a short int or
unsigned short int argument, or a following n conversion corre-
sponds to a pointer to a short int argument.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

익명 사용자의 이미지

질문하신 내용에 대해 단순하게 대답하자면,

yjcho wrote:
32bit 코드 말고 16bit 코드로 나오게 할려면 어떻게 하죠?

GCC는 32bit 실행파일만 생성 가능한 것으로 알고 있습니다.

yjcho wrote:
그리고 출력할때 실행파일포맷으로 옛날에 DOS에 쓰던 EXE파일 포맷으로 출력할 수 있나요?

GCC의 DOS 버전인 DJGPP를 사용하시면 가능합니다.
그러나 위의 컴파일러는 32bit 보호모드용 실행파일만 생성합니다.

yjcho의 이미지

그러면 GCC로는 DOS용 실행파일은 만들수 없는 것이군요...

답변감사드립니다. :)

Prentice의 이미지

DJGPP에 기본 포함된 GCC로 DOS용 32bit 실행파일은 만들 수 있습니다. 16bit 실행파일을 만들 수 없을 뿐입니다.

참고로 8086을 위한 DJGPP GCC도 있긴 있는데 사용가능한 수준은 아닌 것 같습니다.

http://www.delorie.com/djgpp/16bit/gcc/