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

 
 
> PC +/- …
Wise
сообщение Apr 11 2011, 17:44
Сообщение #1


Пользователь забанен
*****

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



..Борюсь с атмегами.. о, как они мне не нравятся.. ну всё, буквально, претит.. rolleyes.gif

..Вопрос такой.
У PIC-ов есть возможность написать: гоу ту доллар +/-, скажем, 7.
И программа перейдет по указанному адресу.
У атмег, аналогичный вариант выглядит, как, PC +/- 7.
Как бы, это работает. Но, недавно, что-то не пошло, пришлось по фрагментам в студии рассматривать. И обнаружил, что не прыгает оно на семь указанных строчек, а прыгает на шесть. А в других случаях прыгало..
Если указать восемь, будет прыгать на семь.
..Это глюк такой или есть нюансы, которых не знаю?
..С PIC-ами таких проблем не было.

P.S. Настоятельная просьба ко всем, решившим сюда ответить: ни слова о Си. О его достоинствах, преимуществах и т. д. Ни слова! Или сразу закрою тему.


--------------------
It's me
Go to the top of the page
 
+Quote Post
12 страниц V  « < 5 6 7 8 9 > »   
Start new topic
Ответов (90 - 104)
Rst7
сообщение Apr 14 2011, 07:18
Сообщение #91


Йа моск ;)
******

Группа: Модераторы
Сообщений: 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 такта)?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 14 2011, 07:36
Сообщение #92


Чайник, 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) *
Скажите, какая разница...
В первом случае отсутствие необходимости указать куда переходить. Метка. Суть темы, собственно.
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 14 2011, 07:37
Сообщение #93


Гуру
******

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



Цитата(Wise @ Apr 14 2011, 00:37) *
..Может быть, я и программист в кавычках, как вы отметили, однако, я не просил вас давать оценку моему уровню.

Под "программистами" я не имел ввиду конкретно Вас, сорри если Вы приняли на свой счет.
Цитата(Wise @ Apr 14 2011, 00:37) *
Для симметрии, хотите услышать мою оценку вашего уровня? У меня сложилось некоторое мнение, на основании ваших постов здесь..

Представляю оценку biggrin.gif . Стыдно признаться, но я ни разу не использовал мнемонику PC+/-7.
Цитата(Wise @ Apr 14 2011, 00:37) *
Еще раз пост Ark-а перечитайте, он хорошо поясняет причину, по которой задан вопрос в теме.
Возможно, вы не поняли..

Возможно и я не понял.

Но я всетаки хочу разобраться и понять вконце концов суть вашего вопроса.
Попробую сформулировать по другому:
Вы утверждаете что ATMELовские трансляторы не правильно компилируют некоторые команды у которых аргументом является програмный счётчик?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 14 2011, 07:40
Сообщение #94


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Rst7 @ Apr 14 2011, 11:18) *
Простите, господа, но не ожидал я от Вас такого загона. Скажите, какая разница между SBxx (выполнение следующей команды через такт или невыполнение стоимостью 2 такта) и BRxx (с крайним случаем перехода через команду - выполнение следующей команды через такт (переход не выполняется) или невыполнение при помощи перехода, а не пропуска, тоже ценой 2 такта)?

Разница принципиальная - с тупого конца разбивать, или с острого ! Присоединяйтесь к нашей партии !!! wink.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 14 2011, 07:44
Сообщение #95


Йа моск ;)
******

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



QUOTE
В первом случае отсутствие необходимости указать куда переходить. Метка. Суть темы, собственно.


Нет. Суть темы - явно в кривых руках топикстартера. А это локальный оффтопик про якобы "говносистему команд". Причем, от профессионалов, что и удивляет.

QUOTE
Разница принципиальная - с тупого конца разбивать, или с острого !


Ах в этом смысле biggrin.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 14 2011, 07:45
Сообщение #96


Гуру
******

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



Цитата(Rst7 @ Apr 14 2011, 11:18) *
Скажите, какая разница между SBxx (выполнение следующей команды через такт или невыполнение стоимостью 2 такта) и BRxx (с крайним случаем перехода через команду - выполнение следующей команды через такт (переход не выполняется) или невыполнение при помощи перехода, а не пропуска, тоже ценой 2 такта)?


Текстуальная. Что мы и обсуждаем.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 14 2011, 07:46
Сообщение #97


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 14 2011, 07:48
Сообщение #98


Йа моск ;)
******

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



QUOTE
Текстуальная.


Да ну? Напомню начальный вброс:

QUOTE
Вообще, IMHO, глупо было выносить SREG из зоны доступности sbis/sbic - в PIC16 этот момент гораздо приятнее...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 14 2011, 07:52
Сообщение #99


Гуру
******

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



Цитата(Rst7 @ Apr 14 2011, 11:48) *
Да ну? Напомню начальный вброс:


Не, фразой "даже хуже" обсуждалось, что brxx нельзя заменить на аналог sbrc без метки и хака с PC.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 14 2011, 07:52
Сообщение #100


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Rst7 @ Apr 14 2011, 11:48) *
Да ну? Напомню начальный вброс:

Да ладно, грызня была уже до этого. Доступ к SREG разнообразил бы ассортимент команд, не плодя лишние опкоды, но и только. А основной вопрос - кошерно ли использовать PC в команде перехода. При наличии пропусков по состоянию бита в SREG во многих случаях такое и не потребовалось, но не всегда. В том и вопрос, что нагляднее - PC+2 или лишняя метка.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 14 2011, 07:57
Сообщение #101


Йа моск ;)
******

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



QUOTE
Доступ к SREG разнообразил бы ассортимент команд, не плодя лишние опкоды, но и только.
...
В том и вопрос, что нагляднее - PC+2 или лишняя метка.


Система команд в текущем случае эффективна и не избыточна. Причем, именно вкупе с реализацией адресного пространства - доступ к SREG только через IN/OUT, без битовой возни. А если SREG будет доступен SBIC/SBIS, то это будет избыточность. Лучше туда что-то полезное положить.

А вообще, если свербит, и мозг не умеет понимать сразу с листа, то сделайте макрос, назовите его SKIP xx, где xx - условие. Ну или еще как. Но не путайте это с эффективностью системы команд.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 14 2011, 08:00
Сообщение #102


Гуру
******

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



Цитата(rx3apf @ Apr 14 2011, 11:52) *
А основной вопрос - кошерно ли использовать PC в команде перехода


Позвольте, вас поправлю.
Основной обсуждаемый вопрос - кошерно ли использовать PC в ассемблерном тексте, описывающем команду перехода, программисту явно, или следует обязательно положиться в вычислении смещения на ассемблер? sm.gif

PS Основной вопрос ТС: "почему мои любимые пиковские хаки не работают у меня на AVR, ох, как я ненавижу, как я ненавижу..." Вопрос настоящего инженера, бесспорно. laughing.gif

Цитата(Rst7 @ Apr 14 2011, 11:57) *
А вообще, если свербит, и мозг не умеет понимать сразу с листа, то сделайте макрос, назовите его SKIP xx, где xx - условие. Ну или еще как. Но не путайте это с эффективностью системы команд.


Мне нравится ваше предложение! Макрос, который тихо будет работать некорректно с некоторыми избранными командами, длину которых он знать не может. laughing.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
ARV
сообщение Apr 14 2011, 08:01
Сообщение #103


Профессионал
*****

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



я тоже отмечусь снова - может, на общем фоне за гуру проканаю sm.gif))

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

по-моему, очевидно.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Apr 14 2011, 08:05
Сообщение #104


Йа моск ;)
******

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



QUOTE
Мне нравится ваше предложение!


Ну ничем не хуже, чем тупо писать PC+2 всегда sm.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 14 2011, 08:07
Сообщение #105


Гуру
******

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



Цитата(Rst7 @ Apr 14 2011, 12:05) *
Ну ничем не хуже, чем тупо писать PC+2 всегда sm.gif



Нет, ваше предложение сильно превзошло PC+2, однозначно!
PC + 2 по крайней мере заставляет заметить опасную практику, макрос её тихонько маскирует. laughing.gif
Это из Остера, типа переопределения int дефайном?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post

12 страниц V  « < 5 6 7 8 9 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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