[an error occurred while processing this directive] [an error occurred while processing this directive]
Могу высказать свое личное мнение (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено просто так 18 сентября 2001 г. 14:35
В ответ на: Уважвемые коллеги, если я сильно назойлив, то можете не отвечать на мои идиотские вопросы новичка, но все же... отправлено Электронщик 17 сентября 2001 г. 20:39

Свой первый проект для микро-ЭВМ (это был 51-й процессор) я делал на C (до этого я программировал для персоналки на Борландовском C, так что был знаком с этим языком). О 51-х процессорах до этого я вообще ничего не знал - поэтому я прочитал о его системе команд, хотя и не запомнил ее. У C-компилятора была возможность "объяснять" C-операторы в ассемблерных командах (это был старый IAR-ский компилятор, запускавшийся с командной строки). Все, что я написал на C, я просматривал в листинге как нужно реализовать на ассемблере - если что-то было непонятно, то я просматривал в справочнике описание ассемблерных команд. В итоге через несколько дней интенсивной работы я уже более-менее владел ассемблером и даже изучил слабые стороны компилятора (у него была довольно слабая оптимизация и я видел где и как можно сделать лучше на ассемблере). Ну и я все-таки успешно сделал свой проект на C.
Кстати, по мере развития этого проекта (несколько позже) пришлось использовать арифметику с плавающей точкой - так что я не жалею, что использовал C. Кроме того, C-компилятор очень умно распределял память под локальные переменные (вычислял размер сегмента для локальных переменных с учетом того, откуда функция вызывается и сколько у нее аргументов), а на ассемблере вручную это делать довольно сложно.
А вообще сейчас пошли такие C-компиляторы, в которых можно делать ассемблерные вставки (#asm и #endasm). В некоторых критических случаях приходится прибегать к ним - ну, например, когда есть какой-то цикл, где нужно в массиве быстро перебрать элементы поочереди, то компилятор всякий раз заново перегружает адрес в регистр DPTR - и никогда не использует инструкцию INC DPTR - это можно сделать только с помощью ассемблерной вставки. Но к этому я рекомендую прибегать только по мере крайней необходимости.

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

Ответы



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

E-mail: info@telesys.ru