[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
На C гораздо проще программировать (если программа использует локальные переменные, которые в разных функциях занимают один и тот же адрес, либо используется арифметика с плавающей точкой - то здесь баз C очень трудно). Часто C-компиляторы генерируют выходной код меньше, чем если его писать на ассемблере - различные виды оптимизации иногда часто используемые куски кода выделяют в отдельные функции, за счет чего и получается экономия в размере кода (правда потом в отладчике в C-коде по шагам ходишь и удивляешься - как оно сделало). Иногда компилятор применяет различные "фокусы" - например, при сравнении многобайтовых чисел на 0 или на 0xFFFFFFFF.
Но все равно нужно иметь понятие о том, какие ассемблерные команды присутствуют в конкретном процессоре. Приходилось, например, анализировать - "потянет" ли процессор на данном кварце высокую (38400 bps) скорость по RS-порту - хватит ли у него времени на обработку прерывания до прихода следующего прерывания или же он "захлебнется". Поэтому надо было разбираться в том, какие команды генерирует компилятор, время выполнения каждой команды и т д.
Так что без знания ассемблера не всегда можно обойтись.
E-mail: info@telesys.ru