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

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

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

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

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

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

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

 
Опции темы
Непрочитано 15.02.2011, 23:54  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

"Раз пошла такая пьянка..."
Было высказано очень много суждений по поводу ассемблера, транслятора, компилятора и пр. Возможно мне удастся расставить все точки над i.
1. Трансляторы - программы, которые служат переводчиками программ, записанных на каком-либо языке в последовательность машинных команд, которые могут выполняться (это совсем необязательно) непосредственно на целевом компьютере.
Трансляторы бывают двух видов: компиляторы и интерпретаторы. Общность компиляторов и интерпретаторов состоит в том, что и для тех и для других входом является программа записанная на каком-либо языке. На этом их сходство заканчивается и эти трансляторы работают совершенно по-разному.
При использовании компиляторов этапы трансляции и выполнения программы разделены во времени, на первом этапе выполняется трансляция программы в исполняемый код (при этом требуются дополнительные программы), после чего полученная программа может быть загружена в память компьютера для исполнения. При этом нет необходимости во время исполнения полученной программы хранить в памяти программу транслятора.
При использовании интерпретатора процесс трансляции программы происходит одновременно с ее исполнением. Интерпретатор просто просматривает операторы исходной программы и сразу же их выполняет. Естественно, что при этом интерпретатор должен быть загружен в память вместе с исходной программой.
Достоинства и недостатки использования трансляторов того или другого типа вполне очевидны и рассматривать их не будем.
Продолжение следует.
Реклама:
Bill вне форума  
Непрочитано 16.02.2011, 00:12  
kittec
Гражданин KAZUS.RU
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

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

Сообщение от Bill Посмотреть сообщение
Продолжение следует.
Вот это радует!

PHP код:
Языковый процессоркоторый построчно анализирует исходную программу и одновременно 
выполняет предписанные действия
а не формирует на машинном языке скомпилированную 
программу
которая выполняется впоследствии.[4

отсюда:- http://ru.wikipedia.org/wiki/%D0%98%...82%D0%BE%D1%80

И ещё где-то там видел, что интерпретатор - виртуальная машина. И, соответственно "транслирует" он совсем не в то, работу чего "виртуалит"

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

Сообщение от kittec Посмотреть сообщение
Похоже трансляча компилячите
... а ещё конструячу.. ..какую-то клячу...

Между прочим - выбрать объект, нажать правую кнопку указателя "мышь" и выбрать в выпадающем меню "копировать" - это команда высокого уровня, а, выделив объект, нажать сочетание клавишь Ctrl+C - низкого...

"Остапа понесло" (12 стульев)

Мужчины! Какая разница транслируем мы или компилируем. Мы тут серьёзный вопрос решаем: заколачивать Atmel или нет? Вы тут его дружно хороните, а я, практически голыми руками и в одиночку, удерживаю на плаву. И вы отвлекаетесь на всякие глупости!

Последний раз редактировалось omercury; 16.02.2011 в 00:39.
omercury вне форума  
Непрочитано 16.02.2011, 00:23  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

2. Ассемблер. Что это такое? Обычно под ассемблером понимают:
а) машинно-зависимый язык программирования низкого уровня. Операторы этого языка в основном (но не только) записываются в виде мнемонических обозначений машинных инструкций;
б) транслятор с языка ассемблера.
Если не делать различий между этими двумя понятиями, то нередко возникает путаница.
Итак, ассемблер как язык программирования. Язык ассемблера как и любой другой язык имеет свой синтаксис и свою семантику. Поскольку ассемблер является машинно-зависимым, то для одной и той же целевой платформы может существовать множество различных языков, отличающихся между собой как синтаксисом, так и семантикой. При этом и результаты трансляции (выход) могут быть различными. Единственное сходство (да и то не всегда) между различными языками состоит в единой системе мнемонических обозначений машинных инструкций. В итоге получается, что программа, записанная на одном языке, не может быть странслирована программой ассемблера для другого языка. Для примера возьмем тот же AVR. Для него имеется по крайней мере три известных мне ассемблера - Atmel, IAR, WinAVR. Все они несовместимы между собой ни по входу, ни выходу (возможно я тут слишком категоричен). Можно привести примеры и для других целевых платформ.
Продолжение следует.
Bill вне форума  
Непрочитано 16.02.2011, 01:01  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Всем - до завтра.
omercury вне форума  
Непрочитано 16.02.2011, 01:10  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Ассемблер как транслятор. Поскольку процессы трансляции (ассемблирования) программы и ее исполнения разделены во времени, то транслятор с языка ассемблера можно считать компилятором. Интерпретация полученной программы происходит на аппаратном уровне самим процессором. Кстати, имеются еще программные эмуляторы, которые интерпретируют программы для другого процессора на уровне машинных инструкций.
Далее, простая замена в процессе трансляции мнемоник команд их двоичными значениями это самая простая и далеко не единственная часть работы транслятора (ассемблера). Как и трансляторы для любых других языков, ассемблер содержит в себе и лексический анализатор (сканер), и синтаксический анализатор, и процедуры работы с таблицами символов, и пр. и пр. Единственным отличием ассемблера от остальных компиляторов ЯВУ является принцип трансляции 1-›1 а не 1-›N. Т.е. ассемблер транслирует 1 оператор входного языка в 1 машинную инструкцию.
Не следует также забывать, что помимо трансляции мнемоник команд, ассемблер позволяет освободить программиста от необходимости вручную вычислять адреса переменных в памяти, адреса меток переходов и т.д. и т.п. Как ни странно, но есть ассемблеры, которые даже выполняют некоторую "оптимизацию". А о наличии возможности макро обработки во многих ассемблерах я вообще не говорю.
Выход ассемблера. В зависимости от того, что получается на выходе в результате трансляции, ассемблеры делятся на абсолютные и перемещающие.
Абсолютные ассемблеры выдают на выходе программу в абсолютном формате готовую к исполнению. Ассемблер сам выполняет привязку адресов в программе к физическим адресам в памяти.
Перемещаемые ассемблеры выдают на выходе код в перемещаемом формате. Это код не может быть непосредственно загружен в память для исполнения, поскольку помимо инструкций процессора он содержит много дополнительной информации, необходимой для компоновки программы с помощью специально дополнительной программы - линкера (linkage editor). Линкер осуществляет сборку единой программы из множества объектных модулей и выдает на выходе программу готовую к выполнению.
В общем, об этом можно говорить и писать много. Но интересующимся лучше найти информацию по системному программированию. Там все подробно расписано.
Конец.
Bill вне форума  
Эти 2 пользователя(ей) сказали Спасибо Bill за это сообщение:
Someone (16.02.2011), testerplus (16.02.2011)
Непрочитано 16.02.2011, 02:23  
Ar-Gen-Tum
Почётный гражданин KAZUS.RU
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
Радость Re: Atmel - в цинковый ящик?!!!

Сообщение от Bill Посмотреть сообщение
...
В итоге получается, что программа, записанная на одном языке, не может быть странслирована программой ассемблера для другого языка.
...
А реализации С(С++) прям такие совместимые меж собой. Прям ваще.
Из DLLки, скомпиллированой VC вытянуть функцию и то зачастую
можно разве что используя GetProcAdreess. Совместимость просто офигеть какая.
Ar-Gen-Tum вне форума  
Непрочитано 16.02.2011, 09:05  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от Ar-Gen-Tum Посмотреть сообщение
А реализации С(С++) прям такие совместимые меж собой. Прям ваще.
Из DLLки, скомпиллированой VC вытянуть функцию и то зачастую
можно разве что используя GetProcAdreess. Совместимость просто офигеть какая.
Про совместимость на бинарном уровне никто не говорит. Ее и не должно быть.
Совместимость на уровне синтаксиса присутствует и она полная,иначе это уже не Си/Си++.
Все существующие пакеты разработки не являются компиляторами Си/С++. Они являются средами разработки имеющими в основе компилятор Си.Эта формулировка освобождает их от соблюдения совместимости между собой.Как пример могу привести Делфи имеющая в основе язык паскаль. Но никто не будет сравнивать Дельфи и Паскаль7.0
Gnider вне форума  
Непрочитано 16.02.2011, 09:17  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Atmel - в цинковый ящик?!!!

Сообщение от Bill Посмотреть сообщение
Ассемблер как транслятор. Поскольку процессы трансляции (ассемблирования) программы и ее исполнения разделены во времени, то транслятор с языка ассемблера можно считать компилятором. Интерпретация полученной программы происходит на аппаратном уровне самим процессором. Кстати, имеются еще программные эмуляторы, которые интерпретируют программы для другого процессора на уровне машинных инструкций.
Далее, простая замена в процессе трансляции мнемоник команд их двоичными значениями это самая простая и далеко не единственная часть работы транслятора (ассемблера). Как и трансляторы для любых других языков, ассемблер содержит в себе и лексический анализатор (сканер), и синтаксический анализатор, и процедуры работы с таблицами символов, и пр. и пр. Единственным отличием ассемблера от остальных компиляторов ЯВУ является принцип трансляции 1-›1 а не 1-›N. Т.е. ассемблер транслирует 1 оператор входного языка в 1 машинную инструкцию.
Не следует также забывать, что помимо трансляции мнемоник команд, ассемблер позволяет освободить программиста от необходимости вручную вычислять адреса переменных в памяти, адреса меток переходов и т.д. и т.п. Как ни странно, но есть ассемблеры, которые даже выполняют некоторую "оптимизацию". А о наличии возможности макро обработки во многих ассемблерах я вообще не говорю.
Выход ассемблера. В зависимости от того, что получается на выходе в результате трансляции, ассемблеры делятся на абсолютные и перемещающие.
Абсолютные ассемблеры выдают на выходе программу в абсолютном формате готовую к исполнению. Ассемблер сам выполняет привязку адресов в программе к физическим адресам в памяти.
Перемещаемые ассемблеры выдают на выходе код в перемещаемом формате. Это код не может быть непосредственно загружен в память для исполнения, поскольку помимо инструкций процессора он содержит много дополнительной информации, необходимой для компоновки программы с помощью специально дополнительной программы - линкера (linkage editor). Линкер осуществляет сборку единой программы из множества объектных модулей и выдает на выходе программу готовую к выполнению.
В общем, об этом можно говорить и писать много. Но интересующимся лучше найти информацию по системному программированию. Там все подробно расписано.
Конец.
Это ничего не меняет. Все метки,переменные,константы ассемблер просто подставляет.

Есть много исходняков ассмеблеров для 8-битных МК. Фактически они работают в 2 прохода. Первый проход - заполнение таблицы констант,меток и тд. Второй проход - подстановка их преобразование команд,которое тоже делается по таблице. На сегодняшний день это можно назвать компиляцией,ибо слово "компиляция" вошло в обиход и ей обозначают все что угодно,но если говорить чисто компьютерным языком то этот процесс называется ассемблированием,а именно подстановка(обычно табличная) машинных кодов вместо мнемонических команд.
А написанному например в педивикии не всегда можно верить - ее пишут школьные учителя которые родились уже в эпоху пентиумов.
Gnider вне форума  
 

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

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

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, время: 14:14.


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