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

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

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

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
QUOTE (rx3apf @ Apr 14 2011, 01:14)  Где в AVR команда пропуска по условию ? По битам в i/o или в регистрах - да. А вот по битам в регистре состояния - облом. Вообще, IMHO, глупо было выносить SREG из зоны доступности sbis/sbic - в PIC16 этот момент гораздо приятнее... QUOTE (aaarrr @ Apr 14 2011, 01:29)  Даже хуже. Как верно заметил rx3apf, SREG не попадает в область IO, соответственно, никакие из его флагов не доступны командам sbic/sbis. QUOTE (Oldring @ Apr 14 2011, 01:33)  Даже хуже, но это всё равно не аргумент, чтобы заниматься подобной хакерней. Простите, господа, но не ожидал я от Вас такого загона. Скажите, какая разница между SBxx (выполнение следующей команды через такт или невыполнение стоимостью 2 такта) и BRxx (с крайним случаем перехода через команду - выполнение следующей команды через такт (переход не выполняется) или невыполнение при помощи перехода, а не пропуска, тоже ценой 2 такта)?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 14 2011, 07:36
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Цитата(ILYAUL @ Apr 14 2011, 11:17)  ...решил проверить , а поймает её студия и получил результат не ловит. У меня противоположный результат (проверил только вот; дома AVRStudio не было на ПК). AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36) успешно обнаруживает и соответствующим образом ругается. -- Цитата(Rst7 @ Apr 14 2011, 11:18)  Скажите, какая разница... В первом случае отсутствие необходимости указать куда переходить. Метка. Суть темы, собственно.
|
|
|
|
|
Apr 14 2011, 07:37
|

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

|
Цитата(Wise @ Apr 14 2011, 00:37)  ..Может быть, я и программист в кавычках, как вы отметили, однако, я не просил вас давать оценку моему уровню. Под "программистами" я не имел ввиду конкретно Вас, сорри если Вы приняли на свой счет. Цитата(Wise @ Apr 14 2011, 00:37)  Для симметрии, хотите услышать мою оценку вашего уровня? У меня сложилось некоторое мнение, на основании ваших постов здесь.. Представляю оценку  . Стыдно признаться, но я ни разу не использовал мнемонику PC+/-7. Цитата(Wise @ Apr 14 2011, 00:37)  Еще раз пост Ark-а перечитайте, он хорошо поясняет причину, по которой задан вопрос в теме. Возможно, вы не поняли.. Возможно и я не понял. Но я всетаки хочу разобраться и понять вконце концов суть вашего вопроса. Попробую сформулировать по другому: Вы утверждаете что ATMELовские трансляторы не правильно компилируют некоторые команды у которых аргументом является програмный счётчик?
|
|
|
|
|
Apr 14 2011, 07:44
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
QUOTE В первом случае отсутствие необходимости указать куда переходить. Метка. Суть темы, собственно. Нет. Суть темы - явно в кривых руках топикстартера. А это локальный оффтопик про якобы "говносистему команд". Причем, от профессионалов, что и удивляет. QUOTE Разница принципиальная - с тупого конца разбивать, или с острого ! Ах в этом смысле
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 14 2011, 07:46
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
За всю жизнь переход без метки использовал только один раз: CODE .section .drv.vectors,"ax",@progbits
RJMP ColdStart RJMP . + 0x800 - 2 ; INT0_vect, redirect to application section RJMP . + 0x800 - 2 ; INT1_vect, redirect to application section RJMP . + 0x800 - 2 ; TIMER2_COMP_vect, redirect to application section RJMP . + 0x800 - 2 ; TIMER2_OVF_vect, redirect to application section RJMP TX_START_Handler ; TIMER1_CAPT_vect ........ В остальных случаях хватало локальных и временных меток потому что гнутый асм их поддерживает. А студийный кроме них не поддерживает еще кучу всего и за это идет лесом сразу.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 14 2011, 07:48
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
QUOTE Текстуальная. Да ну? Напомню начальный вброс: QUOTE Вообще, IMHO, глупо было выносить SREG из зоны доступности sbis/sbic - в PIC16 этот момент гораздо приятнее...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 14 2011, 07:57
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
QUOTE Доступ к SREG разнообразил бы ассортимент команд, не плодя лишние опкоды, но и только. ... В том и вопрос, что нагляднее - PC+2 или лишняя метка. Система команд в текущем случае эффективна и не избыточна. Причем, именно вкупе с реализацией адресного пространства - доступ к SREG только через IN/OUT, без битовой возни. А если SREG будет доступен SBIC/SBIS, то это будет избыточность. Лучше туда что-то полезное положить. А вообще, если свербит, и мозг не умеет понимать сразу с листа, то сделайте макрос, назовите его SKIP xx, где xx - условие. Ну или еще как. Но не путайте это с эффективностью системы команд.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 14 2011, 08:00
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(rx3apf @ Apr 14 2011, 11:52)  А основной вопрос - кошерно ли использовать PC в команде перехода Позвольте, вас поправлю. Основной обсуждаемый вопрос - кошерно ли использовать PC в ассемблерном тексте, описывающем команду перехода, программисту явно, или следует обязательно положиться в вычислении смещения на ассемблер?  PS Основной вопрос ТС: "почему мои любимые пиковские хаки не работают у меня на AVR, ох, как я ненавижу, как я ненавижу..." Вопрос настоящего инженера, бесспорно.  Цитата(Rst7 @ Apr 14 2011, 11:57)  А вообще, если свербит, и мозг не умеет понимать сразу с листа, то сделайте макрос, назовите его SKIP xx, где xx - условие. Ну или еще как. Но не путайте это с эффективностью системы команд. Мне нравится ваше предложение! Макрос, который тихо будет работать некорректно с некоторыми избранными командами, длину которых он знать не может.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 14 2011, 08:01
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
я тоже отмечусь снова - может, на общем фоне за гуру проканаю  )) PC+2 или PC-2, пока это именно 2 - еще куда ни шло, но смотреть на вещи надо ширее: PC+13 - это уже сильно напряжет мозг, придется высчитывать команды по словам и разбираться, в какое же место попадешь. особенно лично меня напрягает постоянно помнить особенности аритектуры: PC содержит адрес ЭТОЙ команды, уже СЛЕДУЮЩЕЙ или еще какой-то? с меткой такая проблема не возникает никогда. а при использовании некоторых соглашений в именах меток (вперед - префикс f_, назад - префикс b_) вообще будет красиво - но это на любителя уже. по-моему, очевидно.
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|