Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 40

Тема: Кросс-компиляция для програм на си

  1. #1
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    569
    Спасибо Благодарностей отдано 
    171
    Спасибо Благодарностей получено 
    27
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Кросс-компиляция для програм на си

    Один британец делает интересный проект - https://github.com/hoglet67/PiTubeDi...1-Co-Pro-Notes - про 4 компилятора. Он получает в итоге код для почти голого железа на основе второго процессора для BBC Micro (эквивалент скорости до 500МГц на J11!). Подобные дела могут быть интересны, например, для БК и другого PDP-11 железа. Кромe того, мне представляется, что автор несколько усложняет работу с GCC, - может кто-то захочет ему что-то подсказать.

  2. Этот пользователь поблагодарил litwr за это полезное сообщение:

    Oleg N. Cher (28.05.2022)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Moderator
    Регистрация
    25.08.2012
    Адрес
    г. Красноярск
    Сообщений
    1,040
    Спасибо Благодарностей отдано 
    235
    Спасибо Благодарностей получено 
    287
    Поблагодарили
    204 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    честно не совсем понял причем тут BBC Micro ? поясните суть
    если речь идет о компиляции СИ для PDP-11 то в чем преимущества относительно уже готовых решений ? есть поддержка ДП ? под какие ОС собирается исполняемый файл ?
    Все о БК ДВК УКНЦ VAX Alpha

    Архив ПО для ретрокомпьютеров

    предоставляю бесплатный хостинг на PDP-11.RU для проектов о ретрокомпьютерах

  5. #3
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    569
    Спасибо Благодарностей отдано 
    171
    Спасибо Благодарностей получено 
    27
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SuperMax Посмотреть сообщение
    честно не совсем понял причем тут BBC Micro ? поясните суть
    если речь идет о компиляции СИ для PDP-11 то в чем преимущества относительно уже готовых решений ? есть поддержка ДП ? под какие ОС собирается исполняемый файл ?
    Готовые решения? К сожалению, возможно здесь малоинформирован. Знаю только, что среди энтузиастов не раз пробовали поработать с генерацией бинарников для БК через GCC.
    Знаю ещё, что теоретически можно, используя си-компилятор на БК0011 (УКНЦ, ДВК, ...) под RT11, пытаться затем скомпоновать объектный файл, выдаваемый компилятором, в файл для исполнения на голом железе. Но с таким никогда не сталкивался.
    Как и писал, это проект для голого железа, т.е. в точности для ситуации существования практически всего БК-софта. На BBC Micro с PDP11-процом так пока никакую ОС и не перенесли - британцам без нашей или американской помощи тут скорее не справиться.
    Для меня в hoglet-проекте оказалось сюрпризом, что старый ACK поддерживается и генерирует правильные коды "прямо из коробки", не нужно всякого шаманства как с с GCC или PCC. Кроме того, и качество кодов у ACK для PDP-11 лучше и подстраивать его намного легче, чем GCC.
    Сейчас есть немало софта (в основном игр) для кросс-платформенной си-компиляции. Для 6502 есть cc65, для 8080 и Z80 - z88dk. Весь этот софт можно сделать доступным для БК, если написать библиотеки для поддержки графики и звука, которые скорее всего где-то уже есть.

  6. #4
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,247
    Спасибо Благодарностей отдано 
    246
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    108 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    На BBC Micro с PDP11-процом
    это что за зверь?

  7. #5
    Moderator
    Регистрация
    25.08.2012
    Адрес
    г. Красноярск
    Сообщений
    1,040
    Спасибо Благодарностей отдано 
    235
    Спасибо Благодарностей получено 
    287
    Поблагодарили
    204 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Готовые решения? К сожалению, возможно здесь малоинформирован. Знаю только, что среди энтузиастов не раз пробовали поработать с генерацией бинарников для БК через GCC.
    Знаю ещё, что теоретически можно, используя си-компилятор на БК0011 (УКНЦ, ДВК, ...) под RT11, пытаться затем скомпоновать объектный файл, выдаваемый компилятором, в файл для исполнения на голом железе. Но с таким никогда не сталкивался.
    Как и писал, это проект для голого железа, т.е. в точности для ситуации существования практически всего БК-софта.
    для какого именно ?


    На BBC Micro с PDP11-процом так пока никакую ОС и не перенесли - британцам без нашей или американской помощи тут скорее не справиться.
    прошу пруф на этого зверя
    ибо даже в вики указано
    https://ru.wikipedia.org/wiki/BBC_Micro
    Процессор: MOS Technology 6502A (в Model B — 6512A) на тактовой частоте 2 МГц



    Для меня в hoglet-проекте оказалось сюрпризом, что старый ACK поддерживается и генерирует правильные коды "прямо из коробки", не нужно всякого шаманства как с с GCC или PCC. Кроме того, и качество кодов у ACK для PDP-11 лучше и подстраивать его намного легче, чем GCC.
    Сейчас есть немало софта (в основном игр) для кросс-платформенной си-компиляции. Для 6502 есть cc65, для 8080 и Z80 - z88dk. Весь этот софт можно сделать доступным для БК, если написать библиотеки для поддержки графики и звука, которые скорее всего где-то уже есть.
    честно, очень плохо представляю работу с графикой через графические библиотеки на БК, как впрочем и на других вышеуказанных машинах. принципы работы с графикой у спектрума и БК отличаются кардинально.
    Все о БК ДВК УКНЦ VAX Alpha

    Архив ПО для ретрокомпьютеров

    предоставляю бесплатный хостинг на PDP-11.RU для проектов о ретрокомпьютерах

  8. #6
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    569
    Спасибо Благодарностей отдано 
    171
    Спасибо Благодарностей получено 
    27
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    это что за зверь?
    https://mdfs.net/Docs/Books/PDP11CoPro/Technical
    Мне известны, как минимум, три реализации с примерно 2010. Сделали примерно несколько сотен штук. Но из софта есть только ВВС бейсик и несколько простых утилит. Это подгревает интерес к кросс-компиляции.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    для какого именно ?
    Такого что на любом БК запускается, или игры и много чего ещё для 0011.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    прошу пруф на этого зверя
    ибо даже в вики указано
    https://ru.wikipedia.org/wiki/BBC_Micro
    Процессор: MOS Technology 6502A (в Model B — 6512A) на тактовой частоте 2 МГц
    Это основной процессор. Но везде также написано, что BBC Micro имеет фирменную фишку - слот для подключения 2-о процессора, куда повтыкали практически все известные процы. При подключении 2-го процессора, основной проц превращается во вспомогательный для работы с графикой и вводом-выводом. Кстати, Коммодор хотел у них купить эту фишку, но те пожадничали - пришлось Коммодору что-то такое изобрести только на Амиге 1200.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    честно, очень плохо представляю работу с графикой через графические библиотеки на БК, как впрочем и на других вышеуказанных машинах. принципы работы с графикой у спектрума и БК отличаются кардинально.
    Это зря. Вот список уже поддерживаемых платформ - https://github.com/z88dk/z88dk/wiki/Platform - на некоторых графика очень экзотичная. На БК графика очень простая, существенно попроще, чем, например, на Амстраде или Векторе. Вот Корвет хорошо туда сделать - это реально крутая задачка.

  9. #7
    Moderator
    Регистрация
    25.08.2012
    Адрес
    г. Красноярск
    Сообщений
    1,040
    Спасибо Благодарностей отдано 
    235
    Спасибо Благодарностей получено 
    287
    Поблагодарили
    204 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    https://mdfs.net/Docs/Books/PDP11CoPro/Technical
    Мне известны, как минимум, три реализации с примерно 2010. Сделали примерно несколько сотен штук. Но из софта есть только ВВС бейсик и несколько простых утилит. Это подгревает интерес к кросс-компиляции.
    где можно посмотреть прочитать подробно?

    если говорить о том что подрывает интерес то это:
    1. экзотичность платформы BBS
    2. вместо стандартного MACRO-11 они изобретают свой ассемблер с неведомыми параметрами - ну к примеру
    MOV #&FFFE,R0 ; Read/Write Escape handler
    ADR MyEscHandler,R1 ; Set Escape handler address
    ADR MyEscFlag,R2 ; Set Escape flag address
    EMT 14
    MOV R1,OldEscHandler ; Save old address
    MOV R2,OldEscFlag ; Save old address


    Такого что на любом БК запускается, или игры и много чего ещё для 0011.
    я так и не увидел ответов на простые вопросы:
    есть поддержка ДП ? под какие ОС собирается исполняемый файл ?

    если речь о компиляторе СИ который не поддерживает ДП и не способен сделать файл под операционную систему то какой в этом смысл ?

    лично мне был бы ОЧЕНЬ интересен компилятор СИ который выдаст исполняемый файл под SJ монитор, но с поддержкой ДП - те возможностью использовать до 4хМБ оперативки втч и сам будет заниматься поддержкой оверлея


    Это основной процессор. Но везде также написано, что BBC Micro имеет фирменную фишку - слот для подключения 2-о процессора, куда повтыкали практически все известные процы. При подключении 2-го процессора, основной проц превращается во вспомогательный для работы с графикой и вводом-выводом. Кстати, Коммодор хотел у них купить эту фишку, но те пожадничали - пришлось Коммодору что-то такое изобрести только на Амиге 1200.

    Это зря. Вот список уже поддерживаемых платформ - https://github.com/z88dk/z88dk/wiki/Platform - на некоторых графика очень экзотичная. На БК графика очень простая, существенно попроще, чем, например, на Амстраде или Векторе. Вот Корвет хорошо туда сделать - это реально крутая задачка.
    а смысл ?
    Последний раз редактировалось SuperMax; 04.06.2022 в 12:15.
    Все о БК ДВК УКНЦ VAX Alpha

    Архив ПО для ретрокомпьютеров

    предоставляю бесплатный хостинг на PDP-11.RU для проектов о ретрокомпьютерах

  10. #8
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,247
    Спасибо Благодарностей отдано 
    246
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    108 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообще-то кросс-компиляция это всего лишь навсего получение исполняемых кодов для какой-либо архитектуры на другой архитектуре. Обычно имеет смысл это делать на более мощной для менее мощной, иногда на равноценной.

    Здесь же, насколько я Вас понял задача более сложная. Исполняемые коды одной архитектуры преобразовать в коды более мощной( не имея исходников этих кодов). Даже если упростить эту задачу и давать более мощному процессору( я его в этом случае всегда называл процедурным сопроцессором) выполнять только "железо-независимые" фрагменты кода, так как он может иметь доступ только к памяти( а не портам ввода/вывода и/или системе прерываний), то все-равно это более сложная задача, чем обычная кросс-компиляция.

    В этой системе должны быть части, характерные для эмулятора основной системы, чтобы выявлять "медленные фрагменты" кода, они дизассемблируются для основного процессора и конвертируются в ассемблер процедурного процессора. Затем ассемблируются его процессором. Можно обойтись и без дизассемблирования и ассемблирования, но тогда неимоверно возрастет сложность контроля для пользователя.

    Мысль сделать из PDP-11 процедурный процессор имела бы смысл для архитектуры PDP-8.
    ВВС-Micro логично использовать для этих целей современные и не очень ARM-процессоры.
    Но в приведенном вами примере они использовали целый компьютер Pi-Zero, который в состоянии проделывать всё вышеописанное "на лету". "Фишка" здесь другая. Пользователь основного компа BBC-Micro остается в привычной операционной среде, а ее производительность и другие возможности увеличиваются, благодаря Pi-Zero. Такую штуку можно попытаться проделать для других старых компьютеров, в том числе и БК, но только изменив(дописав) ПО в Pi-Zero.

    Графику таким способом сильно улучшить не получится на уровне железа. А вот матричные вычисления, необходимые для многих графических процедур, становятся более быстрыми и с большими возможностями. Поэтому для пользователя эффект улучшения присутствует.

    - - - Добавлено - - -

    Цитата Сообщение от SuperMax Посмотреть сообщение
    1. экзотичность платформы BBС
    она просто, как пример. Можно попробовать такую же штуку с ZX Spectrum 48, Корветом, MSX.
    Последний раз редактировалось andrews; 04.06.2022 в 13:21.

  11. #9
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    569
    Спасибо Благодарностей отдано 
    171
    Спасибо Благодарностей получено 
    27
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SuperMax Посмотреть сообщение
    где можно посмотреть прочитать подробно?
    Документации немного, все-таки это поздний хоббистский проект. Вот несколько ссылок
    https://mdfs.net/Software/Tube/PDP11/
    https://beebwiki.mdfs.net/PDP-11_Second_Processor
    есть ещё блоги с деталями разных частностей. Сам просто это гуглю - это может каждый. Если есть конкретные вопросы, могу задать их разработчикам.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    если говорить о том что подрывает интерес то это:
    1. экзотичность платформы BBS
    Почему экзотичность? ВВС Мicro - это довольно известный компик. Его ОС перешла на Архимеды и её до сих пор поддерживают для всех Малинок Пи. Экзотично только использование некоторых процов, типа для PDP-11. Кстати, они поддерживают проц на уровне нашего ВМ2.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    2. вместо стандартного MACRO-11 они изобретают свой ассемблер с неведомыми параметрами - ну к примеру
    MOV #&FFFE,R0 ; Read/Write Escape handler
    ADR MyEscHandler,R1 ; Set Escape handler address
    Это только из-за того, что архитектура BBC Micro и ВВС бейсик изначально и до сих пор очень связаны. А человек, который имеет в мире BBC Micro авторитет и который портировал этот бейсик на PDP-11, который, кстати, успешно запускается на БК0011 или УКНЦ, использовал собственноручно написанный ассемблер, в котором совмещал штучки из мира 6502 и PDP-11. Британцы только недавно стали пытаться добавить больше софта, начали с си, но заметили и Макро-11. Интересно, что и у нас сейчас для БК тоже продвигают альтернативный ассемблер на питоне.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    я так и не увидел ответов на простые вопросы:
    есть поддержка ДП ? под какие ОС собирается исполняемый файл ?
    Про ДП в точности не знаю, там должно быть явно больше чем 64 КБ, но в документации ничего не нашел. А про ОС писал уже несколько раз - собирают исполнимые файлы для голого металла, всё как на БК.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    если речь о компиляторе СИ который не поддерживает ДП и не способен сделать файл под операционную систему то какой в этом смысл ?
    Компилятор ДП и не должен в нашей ситуации поддерживать, в железе PDP-11 проца возможно есть поддержка страничной работы с памятью. Смысл в том (повторю), что есть немало софта, который при наличие этого компилятора и библиотеки легко переносится на БК. Вот, например, один из проектов такого типа - https://github.com/Fabrizio-Caruso/CROSS-LIB - у автора есть желание расширять поддержку PDP-11, ему нужны именно кросс-компилятор и библиотека.

    Цитата Сообщение от SuperMax Посмотреть сообщение
    лично мне был бы ОЧЕНЬ интересен компилятор СИ который выдаст исполняемый файл под SJ монитор, но с поддержкой ДП - те возможностью использовать до 4хМБ оперативки втч и сам будет заниматься поддержкой оверлея
    Поддержку ДП делаем библиотечными функциями, пишем проги, использую соответствующие RT11 вызовы и соглашения - и какие проблемы?! Сделать формат исполнимого файла правильным - это несложно, такое уже делали.

    Цитата Сообщение от andrews Посмотреть сообщение
    Здесь же, насколько я Вас понял задача более сложная. Исполняемые коды одной архитектуры преобразовать в коды более мощной( не имея исходников этих кодов). Даже если упростить эту задачу и давать более мощному процессору( я его в этом случае всегда называл процедурным сопроцессором) выполнять только "железо-независимые" фрагменты кода, так как он может иметь доступ только к памяти( а не портам ввода/вывода и/или системе прерываний), то все-равно это более сложная задача, чем обычная кросс-компиляция.
    Похоже Вы неправильно что-то поняли. Никакие коды преобразовывать не надо. Кросс-компилятор сразу генерирует правильные коды для целевой архитектуры.

    ДОПОЛНЕНИЕ. Уточнил у британцев, в их системе поддерживается только 64 КБ, ДП нет.

    - - - Добавлено - - -

    Цитата Сообщение от andrews Посмотреть сообщение
    "Фишка" здесь другая. Пользователь основного компа BBC-Micro остается в привычной операционной среде, а ее производительность и другие возможности увеличиваются, благодаря Pi-Zero. Такую штуку можно попытаться проделать для других старых компьютеров, в том числе и БК, но только изменив(дописав) ПО в Pi-Zero.
    Это не так. Мне эти системы неплохо знакомы, даже исправил баг в эмуляции 32016 в b-em. Среда может меняться, но как правило они её делали близкой к типовой для BBC Micro. Если нужна только скорость, то второй проц - это 6502 на хорошей частоте. Другие процы (Z80, x86, PDP-11, ...) используют для запуска соответствующего софта (CP/M, MS-DOS, Panos, ...).
    Последний раз редактировалось litwr; 05.06.2022 в 10:23.

  12. #10
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,247
    Спасибо Благодарностей отдано 
    246
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    108 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    используют для запуска соответствующего софта (CP/M, MS-DOS, Panos, ...).
    тогда биос/монитор тоже надо переписывать под BBC, так как без этого указанные Вами операционки правильно работать не будут.

    Цитата Сообщение от litwr Посмотреть сообщение
    Кросс-компилятор сразу генерирует правильные коды для целевой архитектуры.
    каким образом? Если нет исходников, то кросс-компилятор ничего сгенерить не может! Декомпилировать исполняемый код до исходного текста С это надо умудриться(особенно, если исполняемый код получен не из С). Мне такие софты не попадались. Просто дизассемблировать(желател но с трассировкой и частями от эмулятора) и потом ассемблировать кросс-ассемблером это еще куда ни шло.

    По поводу использования второго более скоростного 65c02 без внесения изменений в софт, а тем более для распараллеливания "на лету" тоже не получится для софта, который использовал первый процессор "под завязку". А вот расширенный по возможностям процессор, например, ARM с такой задачей справится может.
    Если 65с02 в fpga, то его естественно можно расширить и ускорить(и замедлить). Тогда достаточно просто выкинуть или отключить основной процессор в плате и его функции, в том числе расширенные передать fpga-железу ( или как в проекте, на который Вы давали ссылку, компьютеру Pi Zero)
    Если нет ни того, ни другого, в этой роли может выступить даже внешний гаджет( смартфон, наладонник, ноутбук, десктоп). По сути это режим ICE In-circuit emulation через CPU, а можно и через память. Тогда правда скорость не растет, но на BBC можно запускать что угодно.
    Последний раз редактировалось andrews; 05.06.2022 в 11:20.

Страница 1 из 4 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SNASM кросс ассемблер для 6502/Z80
    от drbars в разделе Программирование
    Ответов: 4
    Последнее: 25.04.2018, 01:16
  2. Кросс-компилятор бейсика для БК
    от litwr в разделе БК-0010/0011
    Ответов: 2
    Последнее: 30.03.2018, 18:03
  3. Примочка для кросс-дева
    от Alex Rider в разделе Несортированное железо
    Ответов: 5
    Последнее: 07.06.2012, 19:21
  4. Кросс-ассемблеры Z80 для Pc
    от Aprisobal в разделе Программирование
    Ответов: 16
    Последнее: 15.01.2011, 22:46
  5. кросс компилятор С для Z80
    от vitasam в разделе Программирование
    Ответов: 24
    Последнее: 04.03.2007, 18:03

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •