|
PC +/- … |
|
|
|
Apr 11 2011, 17:44
|

Пользователь забанен
    
Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492

|
..Борюсь с атмегами.. о, как они мне не нравятся.. ну всё, буквально, претит.. ..Вопрос такой. У PIC-ов есть возможность написать: гоу ту доллар +/-, скажем, 7. И программа перейдет по указанному адресу. У атмег, аналогичный вариант выглядит, как, PC +/- 7. Как бы, это работает. Но, недавно, что-то не пошло, пришлось по фрагментам в студии рассматривать. И обнаружил, что не прыгает оно на семь указанных строчек, а прыгает на шесть. А в других случаях прыгало.. Если указать восемь, будет прыгать на семь. ..Это глюк такой или есть нюансы, которых не знаю? ..С PIC-ами таких проблем не было. P.S. Настоятельная просьба ко всем, решившим сюда ответить: ни слова о Си. О его достоинствах, преимуществах и т. д. Ни слова! Или сразу закрою тему.
--------------------
It's me
|
|
|
|
|
 |
Ответов
(15 - 29)
|
Apr 12 2011, 12:13
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Wise @ Apr 12 2011, 13:04)  ..А вообще, атмега - редкое фуфло.. Точно, поэтому бросьте затею с mega и работайте дальше с нетрыньдовым pic'ом у него команд меньше и все одной длины. Цитата Ага, в макросах - особенно! Много же там локальных меток можно наставить! Любая метка объявленная внутри макроса становится локальной. Поверено. Транслятор добавляет к имени метки @<имя макроса>@<уникальное число>. Цитата Спрошу интереса ради: какой-нибудь аврасм поновее не поддерживает ли временные метки? уникальности внутренних меток можно добиться если не скупиться на длину оной и выработать правило для отличия внутренних от внешних меток. Как для себя __ - значит внутренняя, потом первым словом копируется имя внешней метки и через двойное подчеркивание пишу имя локальной метки Код func1:
... __func1__do_this: ...
__func1__do_that: ..
|
|
|
|
|
Apr 12 2011, 14:14
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(defunct @ Apr 12 2011, 16:13)  уникальности внутренних меток можно добиться если не скупиться на длину оной и выработать правило для отличия внутренних от внешних меток. Как для себя __ - значит внутренняя, потом первым словом копируется имя внешней метки и через двойное подчеркивание пишу имя локальной метки В том-то и дело, что уникальность эта вкупе с чрезмерной длиной даром не нужна, только текст засоряет. Куда как удобнее было бы писать: Код 0 ... dec r16 brne %b0 ... brcs %f0 ... 0
|
|
|
|
|
Apr 12 2011, 15:46
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(_Pasha @ Apr 12 2011, 19:01)  Например, mlasm был такой, см. стр.60 Прикольно, но как по мне, уж очень морочливо. Проще уж метку поставить. Тем более если Цитата(defunct) Любая метка объявленная внутри макроса становится локальной. Поверено. Ну и навсяк случ скачать последнюю версию компилятора.
|
|
|
|
|
Apr 13 2011, 04:07
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Вообще- то по правильному это Цитата LOCAL <список-локальных-меток> внутри макроса, и ессно до их использования. Тем самым пересечение имен исключается на корню
|
|
|
|
|
Apr 13 2011, 12:24
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(ARV @ Apr 13 2011, 10:19)  вроде твердо помню: не поддерживал атмеловский ассемблер локальных меток в макросах... С чего Вы это взяли??? Специально тест написал: CODE ; .listmac ;-------------------------- .MACRO AAA RJMP M2 M0: RJMP ME M1: RJMP M0 M2: NOP RJMP M1 ME: NOP NOP .ENDM ;-------------------------- ; CLI RJMP RESET
.ORG $100
RESET: AAA AAA AAA RJMP RESET
и странслировал двумя новыми AVRASMами: Цитата(Atmel) AVRASM: AVR macro assembler 1.77.3 (Nov 3 2009 14:11:39) AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36) и даже откопал 1996 года, куда уже старше Цитата(Atmel) AVRASM: AVR macro assembler version 1.03a (Aug 26 1996 01:03:00) ВСЕ НОРМАЛЬНО. ВСЕ МЕТКИ ЛОКАЛЬНЫ. НИКАКИХ ЕРРОРОВ!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|