Vagant 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба Здравствуйте, Поскольку я только учусь проектировать встраиваемые системы то возникают всякие наивные вопросы. Один из них - как железо (hardware) понимает написанную на человеческом языке программу (software) во встраиваемой системе (embedded system)? В книжках пишут что команда, например add R2 R1 преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов). Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д. Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба коды придумывает изготовитель микропроцессоров. От фонаря. Последовательность кодов какими-либо средствами записывается в память программ процессора. После специального сигнала СБРОС проц начинает своими способами вытаскивать коды команд последовательно, одну за другой. начинает он это делать обычно с самой первой по порядку команды. Но это необязательно. Адрес самой первой команды после СБРОСА производитель также сообщает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vagant 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 (изменено) · Жалоба копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов). Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д. Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды... А существует ли простой и ясный ответ на мой вроде бы простой вопрос? Имеется ввиду, ответ без привлечения всей теории цифровых систем. коды придумывает изготовитель микропроцессоров. От фонаря. Хотя вид кода и выглядит произвольным для человека но ведь процессор знает какой код что означает. Вот откуда он это знает? Изменено 6 сентября, 2009 пользователем Vagant Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 (изменено) · Жалоба Вы чего это? Процессор - просто проигрыватель кодов. Откуда DVD player знает как надо киану ривза показывать? Изменено 6 сентября, 2009 пользователем DpInRock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vagant 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 (изменено) · Жалоба Вы чего это? Процессор - просто проигрыватель кодов. Откуда DVD player знает как надо киану ривза показывать? Имелись ввиду коды команд процессора - их то он знает. А данные, конечно, разные могут быть. Изменено 6 сентября, 2009 пользователем Vagant Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
domowoj 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба add R2 R1 преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает? Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.) Существуют программы именуемые ассемблерами или компиляторами, которые из "add R2 R1" делают код понятный процессору , чтобы выполнить именно эту операцию. Для лучшего понимания почитайте например Хоровиц "энд" Хилл или Титце "энд"Шенк, они гуляют в нете в эл. виде Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vagant 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 (изменено) · Жалоба Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.) Так вот я и стараюсь разобраться как процессор понимает коды своих команд. (После компиляции файла на языке Си или Ассемблер создаётся файл с машинными кодами, это понятно.) А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет? P.S. Спасибо, Хоровиц у меня есть - буду читать. Изменено 6 сентября, 2009 пользователем Vagant Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 (изменено) · Жалоба Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!! А производители компиляторов уже подстраиваются под конкретного производителя процессоров. Ну, и программу процессор никак не понимает. Он видит из нее исключительно кусочки по одной команде. И ему глубоко наплевать на остальное. И если вместо настоящиъх кодов ему подсунуть фигню, он все равно будет чего-то делать. В смысле, фигню. Процессор никогда не стоит без дела. Всегда извлекает команды и выполняет. (Есть особые случаи, когда он ничего не делает, но это - особые случаи). И когда память команд заканчивается, он продолжает засасывать команды из воздуха. Изменено 6 сентября, 2009 пользователем DpInRock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Microwatt 2 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет? P.S. Спасибо, Хоровиц у меня есть - буду читать. Поищите древнюю книгу Б.Соучека. Микропроцессор по молекулам разжеван. Основу процессора составляет жесткая комбинационная схема с регистром команд на входе. Команда тактовым импульсом защелкивается в регистре и схема выдает все необходимые сигналы на коммутаторы, подключая к арифметическому устройству нужные регистры. В следующем такте результат с выхода АЛУ защелкивается в выходном регистре (аккумуляторе), а во входном - следующая команда. Поле команды разбивается изготовителем на определенные зоны для описания адресов операндов и, собственно, самой процедуры, которую нужно выполнить. В принципе, формат команды может быть задан произвольным, но под него нужна более сложная в проектировании комбинационная схема. Как отличаются числа от команд? Обычно, первое слово - команда. В нем, при необходимости и указывают будут ли последующие слова числами или командами и сколько их будет, если команда сложная, из нескольких слов. Все это "расшивается" (дешифруется) все в той же комбинационной схеме при расшифровке поля команды. Структура команд, полей адресов и данных у разных процессоров крайне разнообразна. Тут можно только самые общие принципы очертить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vagant 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!! А производители компиляторов уже подстраиваются под конкретного производителя процессоров. Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvvvv 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? На физическом уровне все устройства в процессоре работают с двумя уровнями напряжения 0 и 3V. Если процессору подается на 8 разрядную шину 8 разных уровней напряжения,он смотрит какие из них 0V, какие 3V. И в ответ выполняет работу в соответствии с полученной информацией. И точно также выставляет на своих выводах уровни 0V и 3V в зависимости от того, какой результат его вычислений. 0V считается логическим нулем, 3V считается логической единицей.Но процессор этого не знает. Нули и единицы это для людей. Процессор работает только с напряжениями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? Простите, а Вы цифровую схемотехнику где-нибудь проходили? Чтобы разобраться с вопросом, надо знать, что такое сумматор, арифметико-логическое устройство, устройство управления, микропрограмма. Дело в том, что любой алгоритм, изложенный формально, неважно на чем, можно представить двояко: 1. В виде параллельно-последовательной схемы. 2. В виде последовательности команд (операторов). Что в настоящее время и происходит. Люди, умеющие писать программы на С, выбирают микроконтроллеры, а те, кто изучил тот же С, но несколько модифицированный, занимаются FPGA, CPLD и прочей твердотельной гадостью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 (изменено) · Жалоба У процессора нет никаких уровней. Уровни есть у ВАС. Т.е. вы заставляете процессор делать нечто, что выражается в каком-либо конкретном выражении. К примеру. Вы заставляете его зажечь лампочку. Для этого вы даете ему съесть набор команд, которые приводят к данному событию. Если лмпочка подключена к ПРОГРАММНО УПРАВЛЯЕМОМУ ВЫВОДУ микропроцессора, то существует всегда команда, с помощью которой вы можете выдать на этот вывод ЛОГИЧЕСКИЙ НОЛЬ или 1. Этот логический уровень воспринимается лампочкой как соответсвующее напряжение на своих выводах (0 или 5 вольт, например). И получив 5 вольт - она зажигается. Получив 0 вольт - гаснет. В данном случае абстрагирование от уровней напряжения получило название логического уровня. Но ничем от этого уровня не отличающегося. Просто удобнее разговаривать людям. А кроме того, удобно применять математику к логическму уровню. Писанины меньше. --- По опыту. Всегда помните, что любой процессор начинает выборку команд с фиксированного вполне определенного адреса (чаще всего с 0). И именно с этого адреса должна располагаться программа. ВСЕГДА!!!!! Без всяких исключений. Изменено 6 сентября, 2009 пользователем DpInRock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
head_sk 0 6 сентября, 2009 Опубликовано 6 сентября, 2009 · Жалоба коды придумывает изготовитель микропроцессоров. От фонаря. Я бы не сказал что от фонаря. Когда я писал свой синтезируемый процессор, я выбирал далеко не от фонаря. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться