Hitech C CPM уступает по справедливой отрывом z88dk / SDCC. Hitech C v7.50 для DOS ближе. Вы можете взглянуть на некоторые из сравнений, которые мы сделали 10 месяцев назад с использованием реальных программ и общих критериев:
http://www.z88dk.org/wiki/doku.php?i...#dhrystone_2.1
С тех пор я не стал бы ожидать больших изменений в скорости для z88dk / SDCC, но некоторые типы программ будет значительно меньше сих пор.
Где Hitech действительно выходит вперед в скорости в плавающей точкой, когда он работает. Но причина этого в том, что реализация флоат Hitech является 32-бит, тогда как z88dk является 48-битный.
Есть и другие факторы, помимо качества генерации кода, которые являются важными или более важными. Такие вещи, как соответствие стандартам качества, библиотек и гибкого набора инструментов. Я бы сказал Hitech был превзойден по всем этим пунктам. Так что нет, я не совсем согласен с вашей оценкой, что современные инструменты не лучше, чем в 1983 г. продукт :)
Существует текущее развитие при помощи LLVM с C фоновым, а затем передавая, что через компилятор Z80 C для генерации кода. LLVM выполняет больше оптимизацию, чем SDCC и, похоже, может быть, LLVM-> sdcc-> z80 может генерировать лучший код. Еще одна интересная возможность это открывает использует LLVM для компиляции других языков на C, которые затем могут быть скомпилированы для Z80. Это именно то, как работает Оберон Олега.
Зачем идти от LLVM-> C, а не LLVM-> z80? Причина заключается в задний конец инструмента LLVM являются не подходят для генерации кода для 8-битных целей. Много усилий придется вложить, чтобы сделать это. Маршрут LLVM-> C ярлык и выглядит, как это может быть нормально, даже для перевода C-> C. Но я думаю, что более интересный аспект будет на других языках, переведенных на C после оптимизации с помощью LLVM.
Скрытый текст
Hitech C CPM is outperformed by a fair margin by z88dk/sdcc. Hitech C v7.50 for DOS is closer. You can have a look at some of the comparisons we did 10 months ago using real programs and common benchmarks:
http://www.z88dk.org/wiki/doku.php?i...#dhrystone_2.1
Since then I would not expect much change in speed for z88dk/sdcc but some types of programs will be significantly smaller now.
Where Hitech does come out ahead in speed is in the floating point, when it works. But the reason for that is that Hitech's float implementation is 32-bit whereas z88dk's is 48-bit.
There are other factors besides quality of code generation that are important or more important. Things like standards compliance, quality of libraries and flexible toolchain. I would say Hitech has been surpassed on all these points. So no, I don't quite agree with your assessment that modern tools are no better than a 1983 product :)
There is current development in using LLVM with a C back-end and then passing that through a Z80 C compiler to generate code. LLVM performs more optimizations than sdcc and it looks like maybe LLVM->sdcc->z80 might generate better code. Another interesting possibility this opens up is using LLVM to compile other languages to C which could then be compiled to z80. This is exactly how Oleg's Oberon works.
Why go from LLVM->C rather than LLVM->z80? The reason is LLVM's back end tools are not suitable for generating code for 8-bit targets. A lot of effort would have to be invested to do that. The LLVM->C route is a shortcut and looks like it might be ok even for C->C translation. But I think the more interesting aspect would be other languages translated to C after optimization by LLVM.
[свернуть]

