Rst7 5 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Где в AVR команда пропуска по условию ? По битам в i/o или в регистрах - да. А вот по битам в регистре состояния - облом. Вообще, IMHO, глупо было выносить SREG из зоны доступности sbis/sbic - в PIC16 этот момент гораздо приятнее... Даже хуже. Как верно заметил rx3apf, SREG не попадает в область IO, соответственно, никакие из его флагов не доступны командам sbic/sbis. Даже хуже, но это всё равно не аргумент, чтобы заниматься подобной хакерней. Простите, господа, но не ожидал я от Вас такого загона. Скажите, какая разница между SBxx (выполнение следующей команды через такт или невыполнение стоимостью 2 такта) и BRxx (с крайним случаем перехода через команду - выполнение следующей команды через такт (переход не выполняется) или невыполнение при помощи перехода, а не пропуска, тоже ценой 2 такта)? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба ...решил проверить , а поймает её студия и получил результат не ловит.У меня противоположный результат (проверил только вот; дома AVRStudio не было на ПК). AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36) успешно обнаруживает и соответствующим образом ругается. -- Скажите, какая разница...В первом случае отсутствие необходимости указать куда переходить. Метка. Суть темы, собственно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба ..Может быть, я и программист в кавычках, как вы отметили, однако, я не просил вас давать оценку моему уровню. Под "программистами" я не имел ввиду конкретно Вас, сорри если Вы приняли на свой счет. Для симметрии, хотите услышать мою оценку вашего уровня? У меня сложилось некоторое мнение, на основании ваших постов здесь.. Представляю оценку . Стыдно признаться, но я ни разу не использовал мнемонику PC+/-7. Еще раз пост Ark-а перечитайте, он хорошо поясняет причину, по которой задан вопрос в теме. Возможно, вы не поняли.. Возможно и я не понял. Но я всетаки хочу разобраться и понять вконце концов суть вашего вопроса. Попробую сформулировать по другому: Вы утверждаете что ATMELовские трансляторы не правильно компилируют некоторые команды у которых аргументом является програмный счётчик? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Простите, господа, но не ожидал я от Вас такого загона. Скажите, какая разница между SBxx (выполнение следующей команды через такт или невыполнение стоимостью 2 такта) и BRxx (с крайним случаем перехода через команду - выполнение следующей команды через такт (переход не выполняется) или невыполнение при помощи перехода, а не пропуска, тоже ценой 2 такта)? Разница принципиальная - с тупого конца разбивать, или с острого ! Присоединяйтесь к нашей партии !!! ;) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба В первом случае отсутствие необходимости указать куда переходить. Метка. Суть темы, собственно. Нет. Суть темы - явно в кривых руках топикстартера. А это локальный оффтопик про якобы "говносистему команд". Причем, от профессионалов, что и удивляет. Разница принципиальная - с тупого конца разбивать, или с острого ! Ах в этом смысле Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Скажите, какая разница между SBxx (выполнение следующей команды через такт или невыполнение стоимостью 2 такта) и BRxx (с крайним случаем перехода через команду - выполнение следующей команды через такт (переход не выполняется) или невыполнение при помощи перехода, а не пропуска, тоже ценой 2 такта)? Текстуальная. Что мы и обсуждаем. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба За всю жизнь переход без метки использовал только один раз: .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 ........ В остальных случаях хватало локальных и временных меток потому что гнутый асм их поддерживает. А студийный кроме них не поддерживает еще кучу всего и за это идет лесом сразу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Текстуальная. Да ну? Напомню начальный вброс: Вообще, IMHO, глупо было выносить SREG из зоны доступности sbis/sbic - в PIC16 этот момент гораздо приятнее... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Да ну? Напомню начальный вброс: Не, фразой "даже хуже" обсуждалось, что brxx нельзя заменить на аналог sbrc без метки и хака с PC. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Да ну? Напомню начальный вброс: Да ладно, грызня была уже до этого. Доступ к SREG разнообразил бы ассортимент команд, не плодя лишние опкоды, но и только. А основной вопрос - кошерно ли использовать PC в команде перехода. При наличии пропусков по состоянию бита в SREG во многих случаях такое и не потребовалось, но не всегда. В том и вопрос, что нагляднее - PC+2 или лишняя метка. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Доступ к SREG разнообразил бы ассортимент команд, не плодя лишние опкоды, но и только. ... В том и вопрос, что нагляднее - PC+2 или лишняя метка. Система команд в текущем случае эффективна и не избыточна. Причем, именно вкупе с реализацией адресного пространства - доступ к SREG только через IN/OUT, без битовой возни. А если SREG будет доступен SBIC/SBIS, то это будет избыточность. Лучше туда что-то полезное положить. А вообще, если свербит, и мозг не умеет понимать сразу с листа, то сделайте макрос, назовите его SKIP xx, где xx - условие. Ну или еще как. Но не путайте это с эффективностью системы команд. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба А основной вопрос - кошерно ли использовать PC в команде перехода Позвольте, вас поправлю. Основной обсуждаемый вопрос - кошерно ли использовать PC в ассемблерном тексте, описывающем команду перехода, программисту явно, или следует обязательно положиться в вычислении смещения на ассемблер? :) PS Основной вопрос ТС: "почему мои любимые пиковские хаки не работают у меня на AVR, ох, как я ненавижу, как я ненавижу..." Вопрос настоящего инженера, бесспорно. :laughing: А вообще, если свербит, и мозг не умеет понимать сразу с листа, то сделайте макрос, назовите его SKIP xx, где xx - условие. Ну или еще как. Но не путайте это с эффективностью системы команд. Мне нравится ваше предложение! Макрос, который тихо будет работать некорректно с некоторыми избранными командами, длину которых он знать не может. :laughing: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба я тоже отмечусь снова - может, на общем фоне за гуру проканаю :))) PC+2 или PC-2, пока это именно 2 - еще куда ни шло, но смотреть на вещи надо ширее: PC+13 - это уже сильно напряжет мозг, придется высчитывать команды по словам и разбираться, в какое же место попадешь. особенно лично меня напрягает постоянно помнить особенности аритектуры: PC содержит адрес ЭТОЙ команды, уже СЛЕДУЮЩЕЙ или еще какой-то? с меткой такая проблема не возникает никогда. а при использовании некоторых соглашений в именах меток (вперед - префикс f_, назад - префикс b_) вообще будет красиво - но это на любителя уже. по-моему, очевидно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Мне нравится ваше предложение! Ну ничем не хуже, чем тупо писать PC+2 всегда :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Ну ничем не хуже, чем тупо писать PC+2 всегда :) Нет, ваше предложение сильно превзошло PC+2, однозначно! PC + 2 по крайней мере заставляет заметить опасную практику, макрос её тихонько маскирует. :laughing: Это из Остера, типа переопределения int дефайном? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться