Ответ: Вообще-то он обязан быть хуже. Другое дело - насколько хуже.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 02 июля 2003 г. 12:52
В ответ на: Я думаю, что Вы очень хорошо пишите на ASMе и очень плохо на С, у меня ситуация обратная, поэтому код на С как минимум не хуже, чем на ASMe. отправлено Sgrig 02 июля 2003 г. 12:26

Ухудшение как правило связано с тем, что зачастую в языке осутствуют средства для адекватного описания некоторых, специфичных для ассемблера приемов оптимизации программ.
Могу пояснить маленьким (ну очень маленьким примером). Раньше, программисты на ассемблере (да я и сейчас тоже) использовали соглашение, в соответствии с которым признак завершения подпрограммы передавался в некотором флаге (обычно C). Например при успешном ее завершении - флаг C сбрасывался, при ошибке - устанавливался. Поэтому после обращения к такой подпрограмме дополнительного анализа не требуется.


rcall foo ; Вызов
brcs error ; Обработать ошибку

.......... ; Нормальное продолжение программы


На Си такого не сделаешь. Если функция возвращает признак завершения (в регистре), скажем 0 или 1, его после возврата из функции обязательно необходимо делать дополнительную проверку, т.е. использовать дополнительную команду.
А таких примеров можно привести достаточно много.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru