реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Ассемблер Atmel v2.1.2 (Studio 4.12 build 460) - Осторожно!, Глюки ассемблера
Trollix
сообщение Nov 29 2005, 08:11
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 28-11-05
Пользователь №: 11 497



Поймал следующий глюк встроенного в 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 в макросах не работает
Go to the top of the page
 
+Quote Post
Trollix
сообщение Nov 29 2005, 08:47
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 28-11-05
Пользователь №: 11 497



Еще.
Если Вы используете директиву .overlap/.nooverlap в том же самом Атмеловском ассемблере, прекратите это делать немедленно.
В выходной HEX-файл ассемблер помещает обе секции - и перекрывающую, и ту, что должна быть перекрыта (в одних и тех же адресах), оставляя решение вопроса какая из записей главнее программатору (!!).
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 29 2005, 10:14
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



А чем вообще отличаются 1 и 2 версии ассемблера? Я тут столкнулся, когда перешел на 4.12, что мои старые проекты компилируются с ошибками. Посмотрел, стоит версия 2. Установил версию 1, все прошло нормально.
Что я сам заметил - 1-я версия не берет // (комментарий) и когда запихивается двухбайтовое слово в байт, она молча берет младший байт.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Trollix
сообщение Nov 29 2005, 13:39
Сообщение #4





Группа: Новичок
Сообщений: 7
Регистрация: 28-11-05
Пользователь №: 11 497



Исходя из хелпа - добавили С-подобный препроцессор (#define и т.п.) и несколько директив (.undef, .dd, .dq, .warning, .overlap).
Написали, что в .device Asm.v.1 новые камни поддерживаться не будут. Баги тоже фикситься не будут.
Вместо .device atmega128 во втором ассемблере нужно использовать строку типа:
.include "m128def.inc" (для Меги-128)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016