Цитата Сообщение от Sayman Посмотреть сообщение
мне не понятно, зачем применять такие извращённые методы сборки, как совмещение двух разных компиляторов?
Я не уверен, почему вы думаете об этом как извращенное? Набор компилятор состоит из трех независимых частей: (1) язык переводчик, переводит с C (например) ASM, (2) библиотеки функций, и (3) ассемблер / линкера / библиотекаря, который может построить двоичные файлы. Это не редкость, чтобы иметь возможность поменять детали, особенно библиотеку. Есть несколько библиотек C, доступных для загрузки, которые можно использовать в комбинации с любым компилятором, который соответствует замена из (2). Многие современные компиляторы могут составлять для нескольких языков, что соответствует замена из (1). Visual Studio может скомпилировать C, C ++, C #, Fortran, .... все, используя один и тот же код .NET и компоновщик. Существует даже пример старого компилятора с 1980-х годов под названием Kit Amsterdam Compiler, который может скомпилировать C, Pascal, Fortran и предназначается для нескольких процессоров. Все одни и те же библиотеки кода и ассемблер но язык переводчик выгружена в зависимости от языка.

Скрытый текст


I'm not sure why you think of it as perverse? A compiler kit is composed of three independent parts: (1) a language translator that translates from C (for example) to asm, (2) a library of functions, and (3) an assembler / linker / librarian that can build binaries. It's not unusual to be able to swap out parts, especially the library. There are several C libraries available for download that can be used in combination with any C compiler which corresponds to swapping out (2). Many modern compilers can compile for several languages which corresponds to swapping out (1). Visual Studio can compile C, C++, C#, Fortran, .... all using the same .NET code and linker. There is even an example of an old compiler from the 1980s called the Amsterdam Compiler Kit that can compile C, Pascal, Fortran and targets multiple CPUs. All share the same library code and assembler but the language translator is swapped out depending on the language.
[свернуть]


Это ничем не отличается в z88dk. Вы можете выбрать, какой компилятор C для использования (есть два варианта сейчас), и вы можете выбрать, какую библиотеку использовать (есть также два варианта). В будущем очень хорошо могут быть и другие варианты для C компилятора или компиляторы для других языков. Пределы только до доступного времени и интересов вкладчиков.

Скрытый текст


This is no different in z88dk. You can choose which C compiler to use (there are two choices now) and you can choose which library to use (there are also two choices). In the future there very well may be other choices for C compiler or compilers for other languages. The limits are only down to available time and interests of contributors.
[свернуть]


если уж на то пошло, почему просто не дизасемблировать тот же htc 3.09 for cp/m, который бесплатный и не применить кодогенерацию по его образу и подобию+свои оптимизации.
HTC 3.09 для имп не был бы лучшим выбором, но, как вы читали, я не неблагоприятных для добавления других переводчиков

Скрытый текст


HTC 3.09 for cpm wouldn't be the best choice but as you've read I'm not adverse to adding other translators
[свернуть]


Сильно не удобно, если честно, использовать длинные конструкции для сборки одного кода из двух разных компиляторов, пусть и в обном bat файле. Запоминать гору ключей, библиотек. Это всё заморочки не нужные.
Я не знаю, почему вы думаете, что это трудно построить двоичные файлы. Это, как я скомпилировать программу для CP / M с помощью SDCC:

Скрытый текст


I'm not sure why you think it's difficult to build binaries. This is how I compile a program for cp/m using sdcc:
[свернуть]


zcc +cpm -vn -SO3 -clib=sdcc_iy --max-allocs-per-node200000 test.c -o test

Это все. Выход "test_CODE.bin", который может быть переименована в "test.com". Это файл ком запуске в CP / M

Эта же программа составлена для гх с использованием SDCC:

Скрытый текст


That's all. The output is "test_CODE.bin" which can be renamed "test.com". That's the com file you run in cp/m

The same program compiled for zx using sdcc:
[свернуть]


zcc +zx -vn -SO3 -clib=sdcc_ix --reserve-regs-iy --max-allocs-per-node200000 test.c -o test

Это все. Выход "test_CODE.bin", который может быть загружен по адресу 32768 и RAND USR 32768, чтобы запустить его. Если вы хотите, чтобы сделать водопроводную файл, который вы можете запустить appmake на нем (appmake является инструментом в z88dk).


Если ваш проект содержит несколько исходные файлы Си и несколько ASM файлы, которые вы можете собрать его так:

Скрытый текст


That's all. The output is "test_CODE.bin" which can be loaded at address 32768 and RAND USR 32768 to run it. If you want to make a tap file you can run appmake on it (appmake is a tool in z88dk).


If your project contains several C source files and several asm files you can compile it like this:
[свернуть]


zcc +zx -vn -SO3 -clib=sdcc_ix --reserve-regs-iy --max-allocs-per-node200000 test1.c test2.c test3.c m1.asm m2.asm -o test

Это все. Выходной сигнал будет "test_CODE.bin"


Там нет сложных пакетных файлов - только одна строка компиляции. Если вам нужна более сложная обработка файлов или вы хотите индивидуально компилировать C Источник, вы можете использовать пакетный файл или Makefile конечно.


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

Скрытый текст


That's all. The output will be "test_CODE.bin"


There are no complicated batch files -- just one compile line. If you need more complicated processing of your files or you want to individually compile c source, you can use a batch file or makefile of course.


I don't think it's possible to be made simpler. You might be thinking of sdcc which requires you to individually compile source files, link them together and then run ihx2bin to generate a binary.
[свернуть]


Куда проще взять эмулятор cpm для windows, взять бесплатный htc и спокойно мелким батником это собирать. Хотя и make хорошо прикручивается.
Опять таки, сидел ставил эксперименты по тематике ray casting`а понял, что sdcc всё ровно выдаёт более тяжёлый код, даже на фоне старого htc.
SDCC код может быть улучшена, и мы работаем над этим все время. Я был бы заинтересован в том, что некоторые из исходного кода, чтобы мы могли увидеть, если мы могли бы улучшить выход, если он уже не улучшается z88dk. Мы можем исправить многое, но не все, так как мы только пытаемся улучшить код после того, как он уже был создан компилятором. Код выхода из SDCC, когда используется z88dk не то же самое, как то, что выходит из SDCC сам по себе.

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

Скрытый текст


sdcc's code can be improved and we work on this all the time. I would be interested in seeing some of that source code so we could see if we could improve output, if it isn't already improved by z88dk. We can fix many things but not everything since we are only trying to improve code after it has already been generated by the compiler. The code coming out of sdcc when used by z88dk is not the same as what comes out of sdcc by itself.

Sometimes you have to help the compiler generate better code by making some variables static or by breaking large functions into many smaller ones.
[свернуть]


Кстати, во всех этих извратных манипуляциях и библиотеках, поддержки спринтера так и нет.
Еще нет. Новая библиотека C имеет только три цели в данный момент: Zx СРМ и внедренные. Мы концентрируясь на добивании модель драйвера и дискового ввода / вывода, прежде чем мы начнем перенос на новые цели.

Классическая библиотека C действительно имеет экспериментальную поддержку спринтер, включая файл ввода / вывода, но это не представляется возможным использовать SDCC для компиляции для классической библиотеки C пока. Вот над этим работают в настоящее время.
http://www.z88dk.org/wiki/doku.php?id=targets

Скрытый текст


Not yet. The new c library only has three targets currently: zx, cpm and embedded. We're concentrating on finishing the driver model and disk i/o before we start porting to new targets.

The classic C library does have experimental support for the sprinter including file i/o but it is not possible to use sdcc to compile for the classic c library yet. That's being worked on now.
http://www.z88dk.org/wiki/doku.php?id=targets
[свернуть]


http://nightly.z88dk.org/