Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 16.02.2011, 11:59  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от kison Посмотреть сообщение
Ассемблер подставит для ldi R16,77 и cpi R25,5 один и тот же код? Нет? Странно...
Ничего он не подставит.
Что программист ему скажет - то он и закодирует - буква в букву.

В указанном мной коде используется один оператор - if. Вы же указываете разные.
А на разные команды он и не может одно и то же подставить.
Реклама:

Последний раз редактировалось omercury; 16.02.2011 в 12:08.
omercury вне форума  
Сказали "Спасибо" omercury
pinco (22.02.2011)
Непрочитано 16.02.2011, 12:12  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от omercury Посмотреть сообщение
В указанном мной коде используется один оператор - if. Вы же указываете разные.
А на разные команды он и не может одно и то же подставить.
Хорошо. Значит на ldi R16,77 и ldi R16,88 подставит одно и то же? Или на ldi R16,77 и ldi R17,77? Команда одна и та же.
kison вне форума  
Непрочитано 16.02.2011, 12:23  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от kison Посмотреть сообщение
Команда одна и та же.
Команду он и напишет оду и ту же. Константу же, что удивительно, подставит указанную в команде.Нажмите на изображение для увеличения
Название: LDI_R.jpg
Просмотров: 31
Размер:	140.5 Кб
ID:	18478
omercury вне форума  
Непрочитано 16.02.2011, 12:31  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от omercury Посмотреть сообщение
Команду он и напишет оду и ту же. Константу же, что удивительно, подставит указанную в команде.
Команду я ему сам указал. Интересует результат. Он будет разным или одинаковым? Что и как думает транслятор мне не интересно. Если результат одинаковый, то ой.
Если разный, то и if в сишной программе не должен дать одинакового результата. Более того if(a==10) при включенном оптимизаторе может дать разный код на выходе. В зависимости от окружения. При отключенной оптимизации - будет всегда одинаковый давать.
kison вне форума  
Непрочитано 16.02.2011, 12:32  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Кстати и о разнице в зависимости только от аргумента. if(a == 5) и if(a == 0) даст разный код.
kison вне форума  
Непрочитано 16.02.2011, 13:12  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Чего спорим...
Все трансляторы (переводчики с языка на язык) заменяют слова одного языка словами другого, (в том числе и с человеческих языков на человеческие). В случае трансляторов машинных языков, оперирует командами, которые так же можно назвать словами языка.

Например СИ конструкции заменяет блоками ассемблерного кода или непосредстенно блоками машинного кода.
Ассемблерный транслятор подставляет команды ассемблера машинным кодом.

ПРИНЦИПИАЛЬНО (это основное отличие!!!) трансляторы делятся:
КОМПИЛЯТОРЫ - сначала транслирует а потом исполняет.
ИНТЕРПРЕТАТОРЫ - транслирует и исполянет одновремменно.

Больше никаких ПРИНЦИПИАЛЬНЫХ отличий нет.
Так что ассебмлерный транслятор подпадает под определение КОМПИЛЯТОР.

А так же можно сказать, что внутри каждого процессора есть ИНТЕРПРЕТАТОР, который ДЕКОДИРУЕТ машинные коды программы в действия ВНУТРИ ПРОЦЕССОРА, и сразу их исполняет при декодировании.

Сообщение от kison Посмотреть сообщение
Кстати и о разнице в зависимости только от аргумента. if(a == 5) и if(a == 0) даст разный код.
Прикольно.. а в каком компиляторе? )))) их же масса .. для AVR PIС ARM STM и у всех далет разный код?
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 16.02.2011 в 13:19.
picavr вне форума  
Непрочитано 16.02.2011, 13:26  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от picavr Посмотреть сообщение
Прикольно.. а в каком компиляторе? )))) их же масса .. для AVR PIV ARM STM и у всех далет разный код?
Я пока исключений не встречал. Проверка на 0 может делаться по разному, но она отличается от сравнений с константой. Может быть как and сама с собой, OR так же. Есть масса способов, но все равно компилятор выбирает отличный от тупого сравнения. К примеру avrgcc - выбирает TST Reg, хотя есть команда cpi. Армовский гцц делает AND. Впрочем наверно могут и исключения встретиться, но они лишь подтверждают правило
kison вне форума  
Непрочитано 16.02.2011, 13:39  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от kison Посмотреть сообщение
Есть масса способов, но все равно компилятор выбирает отличный от тупого сравнения. К примеру avrgcc - выбирает TST Reg, хотя есть команда cpi.
На это есть своя причина. Инструкция cpi не работает с первой половиной регистров, инструкция tst работает со всеми регистрами.Все определяется соглашениями по использованию регистров. Сами соглашения, естественно, устанавливаются разработчиками компиляторов. Разные разработчики - разные соглашения. Или нет?
Bill вне форума  
Непрочитано 16.02.2011, 13:45  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от kison Посмотреть сообщение
Он будет разным или одинаковым? Что и как думает транслятор мне не интересно. Если результат одинаковый, то ой.
Команда в AVR состоит из 16 бит. В эти 16 бит входит код команды и аргумент (так уж заложил разработчик ядра). Поэтому эти 16 бит (например для ldi r16,x) с разными константами будут разными, но код команды (код ldi и код r16) - будут одними и теми же. Я их, кстати, на картиночке выделил. Та же песня и с cpi.

Сообщение от picavr Посмотреть сообщение
внутри каждого процессора есть ИНТЕРПРЕТАТОР
Внутри каждого процессора есть программируемая логическая матрица, которая из входных данных (код команды, аргументы) формирует выходные (PC обычный счетчик с параллельной загрузкой и т.д.). Поэтому внутри достаточно больших по ёмкости FPGA нормально размещают процессорные ядра. Например ядро MCS51 на 350MHz - вполне реальная вещь на FPGA.
Сообщение от Bill Посмотреть сообщение
Инструкция cpi не работает с первой половиной регистров
Потому, что первыми 4мя битами закодировано полкоманды (cp..), а вторыми 4мя 32 регистра не адресуешь (..i)...
omercury вне форума  
Непрочитано 16.02.2011, 14:05  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от Bill Посмотреть сообщение
Инструкция cpi не работает с первой половиной регистров, инструкция tst работает со всеми регистрами.
Код:
21:           if(tmp2==0) sei();
+00000038:   2388        TST     R24              Test for Zero or Minus
+00000039:   F409        BRNE    PC+0x02          Branch if not equal
+0000003A:   9478        SEI                      Global Interrupt Enable
Регистр далеко не R0.

Сообщение от omercury Посмотреть сообщение
Команда в AVR состоит из 16 бит.
Оператор if в Си не самодостаточен. Ему также нужен аргумент в скобках, без него if не работоспособен. Вот поэтому if (rejim==0 || rejim==1 && soft_start‹zadanie_I) и if(a==10) дают разный код. Однако контекст это не аргумент оператора. Вы же изменили аргумент. Естественно и код будет разный. Я также сделал в ассемблере - регистр и константа для загрузки - аргументы ldi. Результат тоже разный.
kison вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Elenberg MX-339. Черный ящик или как поставить USB Electric75 Аудиотехника 4 18.02.2011 12:00
Atmel, Microchip и Криптография skayt29 Микроконтроллеры, АЦП, память и т.д 13 04.07.2010 16:45


Часовой пояс GMT +4, время: 07:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot