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

 
 
> 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  « < 4 5 6 7 8 > »   
Start new topic
Ответов (75 - 89)
Oldring
сообщение Apr 13 2011, 22:33
Сообщение #76


Гуру
******

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



Цитата(aaarrr @ Apr 14 2011, 02:29) *
Даже хуже. Как верно заметил rx3apf, SREG не попадает в область IO, соответственно, никакие из его флагов не доступны командам sbic/sbis.



Даже хуже, но это всё равно не аргумент, чтобы заниматься подобной хакерней.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 13 2011, 22:44
Сообщение #77


Чайник, 1 литр
****

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



Цитата(rx3apf @ Apr 14 2011, 02:14) *
По битам в i/o или в регистрах - да. А вот по битам в регистре состояния - облом.
Да. Но команда IN флаги не меняет, насколько я помню.

--

Цитата(aaarrr @ Apr 14 2011, 02:11) *
Для замены BRGE что предложите?
Осмысленные метки, я их изначально предлагаю biggrin.gif Ежели доводить до абсурда, то разложить на составляющие результат BRGE тоже возможно.

Цитата(aaarrr @ Apr 14 2011, 02:15) *
Ну, если включать иногда на секунду мозг считается извращением...
Вряд ли извращением, конечно, но неоправданным риском точно. Доверять сие стоит лишь транслятору с ЯВУ, т.к. он не ошибается.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 13 2011, 22:50
Сообщение #78


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Oldring @ Apr 14 2011, 02:33) *
Даже хуже, но это всё равно не аргумент, чтобы заниматься подобной хакерней.

Нет, батенька, не тянут такие конструкции на "хак": слишком уж просто и очевидно.

P.S. Блестящий, остроумнейший неологизм! Примите мои искренние поздравления, маэстро.

Цитата(SysRq @ Apr 14 2011, 02:44) *
Да. Но команда IN флаги не меняет, насколько я помню.

Код
in      reg, SREG
sbrc    reg, BIT
rjmp    xxx

Несколько вычурно, не находите? Да и с GE/LT все равно облом.

Цитата(SysRq @ Apr 14 2011, 02:44) *
Вряд ли извращением, конечно, но неоправданным риском точно. Доверять сие стоит лишь транслятору с ЯВУ, т.к. он не ошибается.

Объясните мне, где я рискую ошибиться в такой конструкции:
Код
brhs    PC + 2
rjmp    xxx
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 13 2011, 23:06
Сообщение #79


Гуру
******

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



Цитата(aaarrr @ Apr 14 2011, 02:50) *
Нет, батенька, не тянут такие конструкции на "хак": слишком уж просто и очевидно.


Именно на хак и тянет.
Экономия в набивании нескольких символов за счет того, что повышается риск ошибоок при модификации программы и ухудшает видимость структуры программы. Метки, кстати, служат еще одной важной функции - показывают, куда может быть передано управление. Соответственно, иногда только текстовым поиском можно легко найти все места, откуда осуществляется переход на помеченную инструкцию.

Цитата(aaarrr @ Apr 14 2011, 02:50) *
Объясните мне, где я рискую ошибиться в такой конструкции:
Код
brhs    PC + 2
rjmp    xxx


На первый взгляд, конечно, кажется, что "brhs PC + 2" текстуально полностью эквивалентно скипу следующего rjmp, если применять единообразно. Но это неверно. Помню, как-то ради быстрого перехода на больший кристалл заменил в проекте все rjmp и rcall на jmp и call текстовой заменой wink.gif

Цитата(SysRq @ Apr 14 2011, 02:44) *
Доверять сие стоит лишь транслятору с ЯВУ, т.к. он не ошибается.


Все врут. laughing.gif

В моей практике было несколько случаев, когда аккуратное расследование показывало, что наврал именно транслятор. Даже такой хорошо известный и очень надежный транслятор, как MSVC 6.0


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


Чайник, 1 литр
****

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



Цитата(aaarrr @ Apr 14 2011, 02:50) *
Несколько вычурно, не находите?
Нахожу, конечно же. Однако, информативность кода та же, что без меток, но меньше шансов ляпнуть ошибку.

Цитата(aaarrr @ Apr 14 2011, 02:50) *
Да и с GE/LT все равно облом.
Нет, не облом, если декомпозировать команду. Но выглядеть будет крайне идиотски, не спорю.

Цитата(aaarrr @ Apr 14 2011, 02:50) *
Объясните мне, где я рискую ошибиться в такой конструкции:
Код
brhs    PC + 2
rjmp    xxx
В процессе правки заменить rjmp на jmp, потому что код разросся (а правили сложно, долго, и где-то много ниже этого вот места), и компилятор ругался на невозможность relative jump. Ошибка по невнимательности. Человеческий фактор.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 13 2011, 23:29
Сообщение #81


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Oldring @ Apr 14 2011, 03:06) *
Именно на хак и тянет.
Экономия в набивании нескольких символов за счет того, что повышается риск ошибоок при модификации программы и ухудшает видимость структуры программы. Метки, кстати, служат еще одной важной функции - показывают, куда может быть передано управление. Соответственно, иногда только текстовым поиском можно легко найти все места, откуда осуществляется переход на помеченную инструкцию.

Какой текстовый поиск? Речь идет об очевидных конструкциях. Ну куда еще может быть передано управление командой "rjmp PC - 1", кроме как на предыдущую?

Цитата(SysRq @ Apr 14 2011, 03:07) *
Нахожу, конечно же. Однако, информативность кода та же, что без меток, но меньше шансов ляпнуть ошибку.

Информативность много ниже. Я уж не говорю о потерянном времени и затраченном регистре.

Цитата(SysRq @ Apr 14 2011, 03:07) *
Нет, не облом, если декомпозировать команду. Но выглядеть будет крайне идиотски, не спорю.

Ну, так можно и до виртуальной машины дойти потихоньку.

Цитата(Oldring @ Apr 14 2011, 03:06) *
На первый взгляд, конечно, кажется, что "brhs PC + 2" текстуально полностью эквивалентно скипу следующего rjmp, если применять единообразно. Но это неверно. Помню, как-то ради быстрого перехода на больший кристалл заменил в проекте все rjmp и rcall на jmp и call текстовой заменой wink.gif

Цитата(SysRq @ Apr 14 2011, 03:07) *
В процессе правки заменить rjmp на jmp, потому что код разросся (а правили сложно, долго, и где-то много ниже этого вот места), и компилятор ругался на невозможность relative jump. Ошибка по невнимательности. Человеческий фактор.

Если уж мы имеем дело с ассемблером, то человеческий фактор и так проявляется на каждом шагу. В конце концов, можно и метку в процессе copy-paste воткнуть не туда. Поэтому элементарную внимательность никто не отменяет.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 13 2011, 23:58
Сообщение #82


Чайник, 1 литр
****

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



Цитата(aaarrr @ Apr 14 2011, 03:29) *
В конце концов...
Класс и цена ошибки другие. Время и усилия на поиск и устранения больше, последствия намного более непредсказуемые, поддерживать код сложнее.
Не вижу ничего хорошего в таком подходе, эх sad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 14 2011, 00:21
Сообщение #83


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SysRq @ Apr 14 2011, 03:58) *
Класс и цена ошибки другие. Время и усилия на поиск и устранения больше, последствия намного более непредсказуемые, поддерживать код сложнее.
Не вижу ничего хорошего в таком подходе, эх sad.gif

Я далек от того, чтобы вводить классификацию ошибок. А время на поиск и устранение вообще трудно предсказать. Вот попробуйте найти ошибку в такой конструкции:
Код
    ldi     r16, 0
    sbrс    r17, 2
    ldi     r16, 1

Пример вполне себе из жизни. Не дословно, конечно, но изюминка сохранена.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 14 2011, 00:48
Сообщение #84


Чайник, 1 литр
****

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



Цитата(aaarrr @ Apr 14 2011, 04:21) *
Вот попробуйте найти ошибку...
Чесгря, шрифты ошибку сдали сразу (сглаживание не работает на латинице в [сode]). Но, однако, разве компилятор не предупреждает о подобном?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 14 2011, 00:55
Сообщение #85


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SysRq @ Apr 14 2011, 04:48) *
Но, однако, разве компилятор не предупреждает о подобном?

Не знаю, как на новых, но аврасм из студии 3.56 даже не морщится.
Да со шрифтами тогда мне так не повезло, естественно biggrin.gif
Go to the top of the page
 
+Quote Post
forever_student
сообщение Apr 14 2011, 02:30
Сообщение #86


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 5-04-09
Из: Москва
Пользователь №: 47 180



Цитата(Wise @ Apr 14 2011, 00:37) *
Вы с чего взяли, что я не читал дэйтшиты и книги Евстифеева?
На чем такая уверенность основана, на том, что я задал вопрос?

Sorry, если обидел... Не хотел.
Не уверенность, а , скорее, удивление ... не тому, что задан вопрос, а
какой вопрос задан.

Цитата(Wise @ Apr 14 2011, 00:37) *
..А книг, могу еще штук 16 перечислить, хотите?

Смысл? Их читать надо rolleyes.gif

Цитата(Wise @ Apr 14 2011, 00:37) *
..Я сказал, что выложу все свои "фи" атмегам, а их много накопилось, и выложу.
Но, сейчас я занят. Все позже.. rolleyes.gif

Было бы очень интересно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 14 2011, 05:01
Сообщение #87


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(aaarrr @ Apr 14 2011, 04:21) *
Я далек от того, чтобы вводить классификацию ошибок. А время на поиск и устранение вообще трудно предсказать. Вот попробуйте найти ошибку в такой конструкции:
Код
    ldi     r16, 0
     sbrс    r17, 2
     ldi     r16, 1

Пример вполне себе из жизни. Не дословно, конечно, но изюминка сохранена.

Что-то не прожевать изюминку. Не вижу ничего криминального.
Колитесь, в чём фишкаsm.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 14 2011, 05:31
Сообщение #88


Чайник, 1 литр
****

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



Цитата(demiurg_spb @ Apr 14 2011, 09:01) *
Колитесь, в чём фишкаsm.gif
Не можем. Топикстартер просил ни слова о том, что тут только кажется таковым, создавая фишку biggrin.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 14 2011, 05:45
Сообщение #89


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Так ведь интересно!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 14 2011, 07:17
Сообщение #90


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Да интересно. Хоть я понял в чём ошибка решил проверить , а поймает её студия и получил результат не ловит. Хотя шрифт тут же ее выдал
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


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


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