|
|
  |
Настоящие инструкции AVR и..., не очень. |
|
|
|
Dec 9 2008, 22:11
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(rx3apf @ Dec 10 2008, 01:01)  Вот это уже лучше. Потому как первоначально было:
--- По поводу условных переходов: если мне не изменяет память (документация далеко), то некоторые команды условного перехода - это не просто команды проверки единичных битов в регистре статуса, а команды проверки их комбинаций. --- Неа, там все однозначно --- Ну дык Вы и не путайте мои посты с чужими, я уже признался что выбирая примеры чуть ошибся... суть моих высказываний от этого не изменилась...
|
|
|
|
|
Dec 9 2008, 23:30
|

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

|
Цитата(singlskv @ Dec 10 2008, 00:11)  суть моих высказываний от этого не изменилась... У Intel'a JZ == JE, и что? ;> Команды переходов это IMHO особый случай, не думаю, что их стоит приплетать. Это просто правило хорошего тона иметь большой набор мнемоник для удобства пользования. Когда удобнее сделать переход по результату мат. опреации - берем команды мат. переходов brsh, brlo ... Когда удобнее флаговый синоним - пользуем флаговый синоним brcc, brcs ....
|
|
|
|
|
Dec 10 2008, 06:34
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(defunct @ Dec 10 2008, 02:30)  ... поиском по ключевому тегу "(see" найдите все такие инструкции. Я насчитал всего 5. CLR CBR LSL ROL TST вот ещё пара: SER R16 = LDI R16, 0xFF SBR R16, 0xNN = ORI R16, 0xNN Цитата + две неудобочитаемых команды работы с флагами SBI A, b ; установить бит b в адресном пространстве ввода/вывода CBI A, b ; сбросить бит b в адресном пространстве ввода/вывода дублируются парами команд SEC CLS SEN CLN SEZ CLZ SEI CLI SES CLS SEV CLV SET CLT SEH CLH Возможно имелось ввиду, что для этих инструкций есть синоним BSET s, а не SBI/CBI.
|
|
|
|
|
Dec 10 2008, 07:29
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(muravei @ Dec 9 2008, 21:08)  Знаю, часть мнемоник инструкций АВР сделаны из комерческих или иных соображений, и приводят к одному и тому же микрокоду. Нельзя узнать : сколько и какие? Если только Вам не лень. Напишите "программу", включающую все команды. Их возьмите из даташита на контроллер. Посмотрите в окно дизассемблера. И поймёте. А чем CBR коммерчески более выгоден, чем ANDI? Относительно проверки 2-х бит. Написано "If Rd < Rr (N [+] V = 1) then PC <- PC + k + 1, else PC <- PC + 1" Но ещё написано • Bit S: Sign Bit, S = N ⊕ V. Так что переход всё-таки по одному биту, который, правда, (из коммерческих соображений?) есть xor двух других бит того же регистра. Помните, тут раньше встречался такой дотошный человек (забанили его), который исследовал код операции AVR на предмет оптимального распределения битов по полям(!), чтобы, значить, если сбойнёт бит в коде, так не было бы фатальных последствий.
|
|
|
|
|
Dec 10 2008, 10:45
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(muravei @ Dec 10 2008, 11:30)  Просто подумал, у ближайших конкурентов Атмела где-то около 30 команд, а у него в 4 раза больше! Сразу ощущаешь гордость. Но понятно, что есть где-то ПЗУ микрокоманд и оно при большем числе , должно занимать большее место. А смысл? А гордость-то за что? Ладно бы команды какие особенные были - как например у Z80 были автоматические блоковые и цикловые команды - вот это я понимаю.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Dec 10 2008, 11:53
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(muravei @ Dec 10 2008, 14:43)  А я нет ! Это "вредные" команды, они по 250 тактов делались, или типа того. Мой склероз подсказывает, что 13 тактов на итерацию. Правда, это были фактически программные циклы, которые можно было прервать (прерыванием) в любой момент, и затем спокойно продолжить. На каждом цикле заново выбирался код операции и все такое... Точно, склероз - 21 такт (загрузки или сравнение) на итерацию !
Сообщение отредактировал rx3apf - Dec 10 2008, 12:13
|
|
|
|
|
Dec 10 2008, 16:28
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(muravei @ Dec 10 2008, 12:30)  Ни чем!  Простое здоровое не здоровое любопытство. (нужное зачеркнуть)  Надеюсь , льзя? Просто подумал, у ближайших конкурентов Атмела где-то около 30 команд, а у него в 4 раза больше! Сразу ощущаешь гордость. Но понятно, что есть где-то ПЗУ микрокоманд и оно при большем числе , должно занимать большее место. Даже если откинуть бредовые ser и т.п., и зачеркнуть дублированные - всё равно команд больше. И как не ехиднечай все они используются компилятором. movw, adiw, sbiw, ldd и т.д и т.п., что, в целом, делает прогу эффективнее. Что-то насчёт ПЗУ микрокоманд, вы похоже загнули. Это не пентиум. 1 такт на команду. То есть обычный дешифратор команд, скорее всего.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|