Мой друган утверждает что С-- ущербен и что можно на ассемблере написать код который нельзя будет воспроизвести на С--. Хотелось бы услышать мнение знатоков
он наверно не так выразился. на С можно и вставки ассемблерные зделать. но размер кода на асме всеравно меньше, да и прогу можно оптимизировать лучше. плюс C в мультиплатформенности, а на асме под конкретную архитектуру. но мне больше паскаль нравился- проше читаеться.
строго говоря - нельзя. А если по сути, то можно. Сравнимый размер бинарника, одинаковый функционал. Расшифруйте "воспроизвести" - это подразумевает идентичность машинного кода, или только аналогичную функциональность? Считаете ли вы воспроизведением mov eax, 0 и xor eax, eax? push 12345 и push [my_12345]? Совсем разное? А если я делаю так: db 68h my_12345 dd 12345 и сегмент кода writable? Если достаточно того, что программа примерно того же размера (+-10% в размере, скажем) и делает примерно то же самое (+-10% в скорости, скажем) - то на С-- можно написать все то же самое, что и на ассемблере. (и кстати не факт, что 10% будут всегда в одну сторону). Если ваш друг упрется и захочет идентичности до каждого бита - ну это и на разных компиляторах ассемблера не всегда достижимо. И главное, не понятно, для чего такой полной идентичности добиваться
А для чего вообще оно нужно и где его применяют? PS: В вики написано, что оно вообще не для человеков.
Squash В меру неудобный компилятор Си с возможностью использования ассемблера - не просто вставок, а практически везде. А, знаю на чем С-- срежется - на 64-битном коде. Он вроде давно заброшен и не обновлялся лет 5. Ну и на SSE2 тоже. Не заложено в него такого. Если вы на 64-битный код замахиваетесь, или инструкции какие новые - то С-- в самом деле ущербен. Только если через машкоды вставлять