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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Как железо "понимает" программу?, очень детский вопрос
Vagant
сообщение Sep 6 2009, 14:34
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Здравствуйте,

Поскольку я только учусь проектировать встраиваемые системы то возникают всякие наивные вопросы. Один из них - как железо (hardware) понимает написанную на человеческом языке программу (software) во встраиваемой системе (embedded system)?

В книжках пишут что команда, например

add R2 R1

преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Sep 6 2009, 15:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов).
Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д.

Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды...
Причина редактирования: Ненужное цитирование.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Sep 6 2009, 15:19
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



коды придумывает изготовитель микропроцессоров. От фонаря.
Последовательность кодов какими-либо средствами записывается в память программ процессора. После специального сигнала СБРОС проц начинает своими способами вытаскивать коды команд последовательно, одну за другой. начинает он это делать обычно с самой первой по порядку команды. Но это необязательно. Адрес самой первой команды после СБРОСА производитель также сообщает.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Vagant
сообщение Sep 6 2009, 15:29
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(toweroff @ Sep 6 2009, 18:17) *
копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов).
Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д.

Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды...


А существует ли простой и ясный ответ на мой вроде бы простой вопрос? Имеется ввиду, ответ без привлечения всей теории цифровых систем.

Цитата(DpInRock @ Sep 6 2009, 18:19) *
коды придумывает изготовитель микропроцессоров. От фонаря.


Хотя вид кода и выглядит произвольным для человека но ведь процессор знает какой код что означает. Вот откуда он это знает?

Сообщение отредактировал Vagant - Sep 6 2009, 15:21
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Sep 6 2009, 15:44
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Вы чего это? Процессор - просто проигрыватель кодов. Откуда DVD player знает как надо киану ривза показывать?

Сообщение отредактировал DpInRock - Sep 6 2009, 15:45


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Vagant
сообщение Sep 6 2009, 15:49
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(DpInRock @ Sep 6 2009, 18:44) *
Вы чего это? Процессор - просто проигрыватель кодов. Откуда DVD player знает как надо киану ривза показывать?


Имелись ввиду коды команд процессора - их то он знает. А данные, конечно, разные могут быть.

Сообщение отредактировал Vagant - Sep 6 2009, 15:52
Go to the top of the page
 
+Quote Post
domowoj
сообщение Sep 6 2009, 15:56
Сообщение #7


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(Vagant @ Sep 6 2009, 21:34) *
add R2 R1

преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает?

Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.)
Существуют программы именуемые ассемблерами или компиляторами, которые из "add R2 R1" делают код понятный процессору , чтобы выполнить именно эту операцию.
Для лучшего понимания почитайте например Хоровиц "энд" Хилл или Титце "энд"Шенк,
они гуляют в нете в эл. виде


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Vagant
сообщение Sep 6 2009, 16:09
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(domowoj @ Sep 6 2009, 18:56) *
Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.)


Так вот я и стараюсь разобраться как процессор понимает коды своих команд. (После компиляции файла на языке Си или Ассемблер создаётся файл с машинными кодами, это понятно.)

А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет?

P.S. Спасибо, Хоровиц у меня есть - буду читать.

Сообщение отредактировал Vagant - Sep 6 2009, 16:18
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Sep 6 2009, 16:23
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!!
А производители компиляторов уже подстраиваются под конкретного производителя процессоров.

Ну, и программу процессор никак не понимает. Он видит из нее исключительно кусочки по одной команде. И ему глубоко наплевать на остальное.
И если вместо настоящиъх кодов ему подсунуть фигню, он все равно будет чего-то делать. В смысле, фигню. Процессор никогда не стоит без дела. Всегда извлекает команды и выполняет. (Есть особые случаи, когда он ничего не делает, но это - особые случаи).

И когда память команд заканчивается, он продолжает засасывать команды из воздуха.

Сообщение отредактировал DpInRock - Sep 6 2009, 16:35


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Sep 6 2009, 16:34
Сообщение #10


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(Vagant @ Sep 6 2009, 19:09) *
А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет?

P.S. Спасибо, Хоровиц у меня есть - буду читать.

Поищите древнюю книгу Б.Соучека. Микропроцессор по молекулам разжеван.
Основу процессора составляет жесткая комбинационная схема с регистром команд на входе. Команда тактовым импульсом защелкивается в регистре и схема выдает все необходимые сигналы на коммутаторы, подключая к арифметическому устройству нужные регистры. В следующем такте результат с выхода АЛУ защелкивается в выходном регистре (аккумуляторе), а во входном - следующая команда.
Поле команды разбивается изготовителем на определенные зоны для описания адресов операндов и, собственно, самой процедуры, которую нужно выполнить. В принципе, формат команды может быть задан произвольным, но под него нужна более сложная в проектировании комбинационная схема.
Как отличаются числа от команд? Обычно, первое слово - команда. В нем, при необходимости и указывают будут ли последующие слова числами или командами и сколько их будет, если команда сложная, из нескольких слов. Все это "расшивается" (дешифруется) все в той же комбинационной схеме при расшифровке поля команды.
Структура команд, полей адресов и данных у разных процессоров крайне разнообразна. Тут можно только самые общие принципы очертить.
Go to the top of the page
 
+Quote Post
Vagant
сообщение Sep 6 2009, 16:34
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820



Цитата(DpInRock @ Sep 6 2009, 19:23) *
Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!!
А производители компиляторов уже подстраиваются под конкретного производителя процессоров.


Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне?
Go to the top of the page
 
+Quote Post
vvvvv
сообщение Sep 6 2009, 17:16
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-06-04
Пользователь №: 85



Цитата(Vagant @ Sep 6 2009, 20:34) *
Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне?

На физическом уровне все устройства в процессоре работают с двумя уровнями напряжения 0 и 3V. Если процессору подается на 8 разрядную шину 8 разных уровней напряжения,он смотрит какие из них 0V, какие 3V. И в ответ выполняет работу в соответствии с полученной информацией. И точно также выставляет на своих выводах уровни 0V и 3V в зависимости от того, какой результат его вычислений. 0V считается логическим нулем, 3V считается логической единицей.Но процессор этого не знает. Нули и единицы это для людей. Процессор работает только с напряжениями.
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Sep 6 2009, 18:01
Сообщение #13


Cундук
*****

Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269



Цитата(Vagant @ Sep 6 2009, 20:34) *
Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне?

Простите, а Вы цифровую схемотехнику где-нибудь проходили?
Чтобы разобраться с вопросом, надо знать, что такое сумматор, арифметико-логическое устройство, устройство управления, микропрограмма.
Дело в том, что любой алгоритм, изложенный формально, неважно на чем, можно представить двояко:
1. В виде параллельно-последовательной схемы.
2. В виде последовательности команд (операторов).
Что в настоящее время и происходит.
Люди, умеющие писать программы на С, выбирают микроконтроллеры, а те, кто изучил тот же С, но несколько модифицированный,
занимаются FPGA, CPLD и прочей твердотельной гадостью.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Sep 6 2009, 18:37
Сообщение #14


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



У процессора нет никаких уровней. Уровни есть у ВАС. Т.е. вы заставляете процессор делать нечто, что выражается в каком-либо конкретном выражении. К примеру. Вы заставляете его зажечь лампочку. Для этого вы даете ему съесть набор команд, которые приводят к данному событию.

Если лмпочка подключена к ПРОГРАММНО УПРАВЛЯЕМОМУ ВЫВОДУ микропроцессора, то существует всегда команда, с помощью которой вы можете выдать на этот вывод ЛОГИЧЕСКИЙ НОЛЬ или 1. Этот логический уровень воспринимается лампочкой как соответсвующее напряжение на своих выводах (0 или 5 вольт, например). И получив 5 вольт - она зажигается. Получив 0 вольт - гаснет.

В данном случае абстрагирование от уровней напряжения получило название логического уровня. Но ничем от этого уровня не отличающегося. Просто удобнее разговаривать людям. А кроме того, удобно применять математику к логическму уровню. Писанины меньше.

---
По опыту. Всегда помните, что любой процессор начинает выборку команд с фиксированного вполне определенного адреса (чаще всего с 0).
И именно с этого адреса должна располагаться программа. ВСЕГДА!!!!! Без всяких исключений.

Сообщение отредактировал DpInRock - Sep 6 2009, 18:39


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
head_sk
сообщение Sep 6 2009, 18:44
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 3-07-09
Пользователь №: 50 897



Цитата(DpInRock @ Sep 6 2009, 18:19) *
коды придумывает изготовитель микропроцессоров. От фонаря.

Я бы не сказал что от фонаря. Когда я писал свой синтезируемый процессор, я выбирал далеко не от фонаря.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st September 2025 - 17:53
Рейтинг@Mail.ru


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