[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]

Отправлено diwil 15 февраля 2002 г. 18:56
В ответ на: Просветите, если не лень отправлено Shura 15 февраля 2002 г. 18:06

1. Ну, то что называется brain-damaged - little-endian.
2. Регистровый порядок байт (длинная переменная в регистре) вообще имеет веселый порядок байт.
3. Не реализованы некоторые команды сравнения
4. Нет команд сравнения с учетом переноса
5. Нет команд типа "neg" (a = -a)
6. Нет команд типа abs()
7. Компилятор конкретно задумывается и, на мой взгляд, выдает плохой код для команд типа (IAR я смотрел):
while(a&(1L<<30)){...}8. В IARe не совсем понятна стратегия распределения регистров - из того, что я нарыл следует, что эта последовательность глупая (r4-r15)
9. В ИАРе нет способов восстановления режима полной мощности после выхода из прерывания
10. Архитектура ядра такова, что если много однобайтовых переменных,
то их приходится размещать в памяти с дырками - выравнивать на двойку (иначе не понятна реакция на преобразование типов char -> int, etc)
11. В ИАРе вроде не IEE754 плавающая арифметика (точно не знаю)

... про другие компилеры сказать не могу...
... хотя про GCC тоже могу наговорить мнгого гадостей ....



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

Ответы



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

E-mail: info@telesys.ru