Trollix
Nov 29 2005, 08:11
Поймал следующий глюк встроенного в AvrStudio-4 ассемблера v2.1
.macro Test
.ifdef @0
ldi tmp,$11
.else
ldi tmp,$22
.endif
.endm
.set QQQQQ = $33
nop
Test ABCDE
Test QQQQQ
nop
Транслируется в:
nop
ldi tmp,$11
ldi tmp,$22
ldi tmp,$11
nop
Т.е. .ifdef/.ifndef в макросах не работает
Trollix
Nov 29 2005, 08:47
Еще.
Если Вы используете директиву .overlap/.nooverlap в том же самом Атмеловском ассемблере, прекратите это делать немедленно.
В выходной HEX-файл ассемблер помещает обе секции - и перекрывающую, и ту, что должна быть перекрыта (в одних и тех же адресах), оставляя решение вопроса какая из записей главнее программатору (!!).
Георгий
Nov 29 2005, 10:14
А чем вообще отличаются 1 и 2 версии ассемблера? Я тут столкнулся, когда перешел на 4.12, что мои старые проекты компилируются с ошибками. Посмотрел, стоит версия 2. Установил версию 1, все прошло нормально.
Что я сам заметил - 1-я версия не берет // (комментарий) и когда запихивается двухбайтовое слово в байт, она молча берет младший байт.
Trollix
Nov 29 2005, 13:39
Исходя из хелпа - добавили С-подобный препроцессор (#define и т.п.) и несколько директив (.undef, .dd, .dq, .warning, .overlap).
Написали, что в .device Asm.v.1 новые камни поддерживаться не будут. Баги тоже фикситься не будут.
Вместо .device atmega128 во втором ассемблере нужно использовать строку типа:
.include "m128def.inc" (для Меги-128)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.