Есть ли компилятор C, ориентированный на 8086?

У меня есть эмулятор процессора 8086. Он эмулирует только 8086 инструкций. Сейчас я ищу компилятор C для этого эмулятора. Есть ли компилятор C, который может это сделать?

Кроме того, для меня не важно иметь пригодную для использования libc и тому подобное. Эмулятор использует нестандартное (т. е. не ПК) оборудование, и поэтому любую libc или даже ctr0, вероятно, в любом случае придется переписать.


person Earlz    schedule 20.12.2010    source источник
comment
Любой 16-битный компилятор DOS.   -  person Hans Passant    schedule 20.12.2010
comment
К сожалению, да, их слишком много, и слишком много профессоров колледжей заставляют своих студентов ими пользоваться...   -  person R.. GitHub STOP HELPING ICE    schedule 20.12.2010
comment
@R.. @Hans многие из компиляторов, которые я видел, нацелены выше, чем 8086, обычно они доходят до кодов операций 8186 и 8286.   -  person Earlz    schedule 22.12.2010
comment
@Earlz Как насчет компилятора MS C для DOS (QuickC) (насколько я помню, MS-DOS (или, по крайней мере, некоторые ее основные части) никогда не полагались на что-либо выше 8086, так что ..) Я нашел одну ссылку (которая сообщает технические проблемы на данный момент) vetusware.com/download/QuickC%202.51/?id =3503, и есть и другие. Надеюсь, что это поможет вам и (если слишком поздно) всем заинтересованным.   -  person mlvljr    schedule 11.08.2011
comment
@mlv спасибо, но я больше искал современный компилятор, поддерживающий как минимум C89   -  person Earlz    schedule 11.08.2011
comment
Это может сделать Microsoft QuickC. Но она настолько старая, что вы не сможете найти ее нигде. У меня где-то есть дискеты 1.44 (их 5, IIRC). И MASM от Microsoft наверняка сделает это, если вы не возражаете против ASM.   -  person jww    schedule 26.05.2015
comment
Голосование за закрытие в качестве инструмента рек. См. также: stackoverflow.com/questions/227762 /   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 04.09.2015


Ответы (3)


bcc — компилятор C Брюса

Из bcc(1) — справочная страница Linux:

Описание

Bcc - это простой компилятор C, который создает ассемблер 8086, кроме того, параметры времени компиляции компилятора позволяют использовать версии 80386 или 6809. Компилятор понимает традиционный K&R C только с тем ограничением, что битовые поля сопоставляются с одним из других целочисленных типов.

Операция по умолчанию заключается в создании исполняемого файла 8086 с именем a.out из исходного файла.

Открыть Watcom

Из описания параметра компилятора/соглашения времени выполнения 80x86 0 в Открыть руководство пользователя Watcom C/C++ (ссылка в формате PDF):

(только 16-разрядные) Компилятор будет использовать только 8086 инструкций в сгенерированном объектном коде. Это значение по умолчанию. Полученный код будет работать на 8086 и всех процессорах, совместимых с предыдущими версиями. Макрос __SW_0 будет предопределен, если выбрано "0"

person jschmier    schedule 20.12.2010

person Community    schedule 20.12.2010
comment
Вы уверены, что Digital Mars будет генерировать двоичные файлы, используя только коды операций 8086? - person Earlz; 20.12.2010
comment
@Earlz: Digital Mars может ориентироваться на 8088, который представляет собой тот же набор инструкций, что и 8086: digitalmars.com/ctg/sc.html#dash023456 - person Michael Burr; 20.12.2010
comment
Другой компилятор, который, возможно, стоит попробовать (хотя я не уверен, для работы ему нужна среда MS-DOS): Turbo C++ 2: edn.embarcadero.com/article/20841 - person Michael Burr; 20.12.2010
comment
@Mich, нет, спасибо, я буду держаться как можно дальше от Turbo C, лол - person Earlz; 22.12.2010

Free Pascal также может создавать 16-битный исполняемый файл 8086. Это не собственный компилятор, вы должны скомпилировать его на своей современной 32-битной машине, а затем скопировать исполняемый файл на свой IBM 51XX или его клон.

person Anton Andreev    schedule 17.01.2020