На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Компиляция в 16-битный код
    Всем привет!

    Хочу с помощью GCC сгенерить ASM-файл с 16-битным кодом (типа как под DOS, а не 16-битный Windows).
    Пишу:
    ExpandedWrap disabled
      gcc -S -m32 -masm=intel -mtune=i386 -O2 %1
    генерится 32-битный код (потому что параметры типа char занимают по 4 байта, ну и используется esp, но это ещё ладно).
    Меняю -mtune=i386 на -mtune=i286, вообще отказывается работать (error: bad value (i286) for -mtune= switch)
    Реально ли это сделать и как?

    Желательно чтобы были билжние вызовы.
    А вообще в идеале - чтобы вывод был не в GNU ASM, а NASM (или хотя бы MASM).

    Или, может, есть другие компиляторы C/C++? Но не древние типа Borland C++ 90-х годов, а нормальные современные, оптимизирующие...

    Добавлено
    И ещё интересует вариант компиляции в OBJ (OMF или COFF, не ELF).

    Добавлено
    Короче, суть в том, чтобы запихнуть в загрузчик (он будет в нескольких секторах: MBR+остальные) сишную процедуру.
      Цитата Jin X @
      Или, может, есть другие компиляторы C/C++? Но не древние типа Borland C++ 90-х годов, а нормальные современные, оптимизирующие...

      А какая тебе разница, если работает ?
      Древние оптимизировали не хуже. Скорее наоборот.
      Сейчас DOS мало кому интересен, значит современный компилер для неё
      вряд ли будет блистать совершенством.
      ----
      www.ya.ru, ищем "GCC для DOS"
      Получаем ссылку:
      GCC for MSDOS
      Или тут
      Но я с этим не разбирался.
      Сообщение отредактировано: ЫукпШ -
        ЫукпШ, вторую ссылку я видел. Там свои нюансы.
        А первую надо глянуть, спасибо ;)
          GCC для DOS это тоже 32-битные компиляторы. В DOS можно было запускать программы в защищённом 32-битном режиме. Для этого использовался DPMI (DOS Protected Mode Interface), реализуемый посредством программ типа DOS4GW, PMODE и других. В Windows 98 этот интерфейс предоставлялся в окне DOS самой системой. Но, начиная с Windiws 7, его, похоже, выпилили. Более того, даже с расширителем такие программы перестали запускаться.
            Та не, работает. В 32-х битах.

            Добавлено
            Возможно, DOS-экстендеры испытывают проблемы, но DPMI на месте.
              Цитата ЫукпШ @
              Древние оптимизировали не хуже. Скорее наоборот.

              А можно пруф этого? Ну типа "вот такой-то код древним компилятором оптимизировался вот так, а новым вот так, и это хуже". Как-то маловероятным кажется это утверждение.
                Я бы не сказал, что древние компиляторы оптимизировали лучше или даже на том же уровне. На своем опыте вижу, что GCC 7+ ушел далеко вперед даже от GCC 4, не говоря уже о более древних. То же самое с Visual Studio 2017 в сравнении с Visual Studio 2008.
                Сообщение отредактировано: Pacific -
                  Цитата OpenGL @
                  Цитата ЫукпШ @
                  Древние оптимизировали не хуже. Скорее наоборот.

                  А можно пруф этого? Ну типа "вот такой-то код древним компилятором оптимизировался вот так, а новым вот так, и это хуже". Как-то маловероятным кажется это утверждение.

                  Это бессмысленное мероприятие и не возможное.
                  Нет новых компилеров для DOS, и не предвидется.
                  Как тогда сравнивать ? Если и будет что-то сделано, то каким-то энтузиастом-одиночкой.
                  Маловероятно, что это будет компьютерный гений, затмивший своим интеллектом спецов из Борланда.
                  Пусть даже из 1990 года.
                  Совершенство старых компилеров для DOS - это моё мнение и точка.
                  Просто мне очень часто приходилось смотреть ассемблерные листинги
                  С-программ. Иногда и сейчас приходится. Поэтому у меня такое мнение и пруфы мне не нужны.
                  С точки зрения совершенства продукция Борланда была весьма хороша.
                  Обычно к концу эпохи все инструменты достигают максимального совершенства.
                  ---
                  А вот GCC я бы не доверял никогда.
                  Посмотрите на опции командной строки. Вся эта система задания параметров - какой-то
                  непрерывный кавардак с бредом. Что твориться в голове авторов ? :wacko:
                  Разве можно им доверить что-либо серьёзное ?
                  Сообщение отредактировано: ЫукпШ -
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0262 ]   [ 17 queries used ]   [ Generated: 16.04.24, 23:37 GMT ]