|
Как железо "понимает" программу?, очень детский вопрос |
|
|
|
Sep 6 2009, 15:29
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(toweroff @ Sep 6 2009, 18:17)  копните сначала в сторону "цифровой автомат", птицу (ПТЦА - прикладная теория цифровых автоматов). Также схемотехника - стандартная логика, регистры, мультиплексоры, счетчики, АЛУ (арифметико-логическре устройство) и т.д.
Тогда уже будет более-менее понятно, откуда берутся машинные циклы и сама методика выборки, дешифрации и обработки команды... А существует ли простой и ясный ответ на мой вроде бы простой вопрос? Имеется ввиду, ответ без привлечения всей теории цифровых систем. Цитата(DpInRock @ Sep 6 2009, 18:19)  коды придумывает изготовитель микропроцессоров. От фонаря. Хотя вид кода и выглядит произвольным для человека но ведь процессор знает какой код что означает. Вот откуда он это знает?
Сообщение отредактировал Vagant - Sep 6 2009, 15:21
|
|
|
|
|
Sep 6 2009, 15:49
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(DpInRock @ Sep 6 2009, 18:44)  Вы чего это? Процессор - просто проигрыватель кодов. Откуда DVD player знает как надо киану ривза показывать? Имелись ввиду коды команд процессора - их то он знает. А данные, конечно, разные могут быть.
Сообщение отредактировал Vagant - Sep 6 2009, 15:52
|
|
|
|
|
Sep 6 2009, 15:56
|

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

|
Цитата(Vagant @ Sep 6 2009, 21:34)  add R2 R1
преобразуется в последовательность кодов которые микропроцессор исполняет. Но мне тогда непонятно откуда берутся эти коды и как микропроцессор их понимает? Нет процесср не поймет "add R2 R1" , он понимает только код (8 или16 разрядов в засимости от проц.) Существуют программы именуемые ассемблерами или компиляторами, которые из "add R2 R1" делают код понятный процессору , чтобы выполнить именно эту операцию. Для лучшего понимания почитайте например Хоровиц "энд" Хилл или Титце "энд"Шенк, они гуляют в нете в эл. виде
--------------------
И на камнях растут деревья!
|
|
|
|
|
Sep 6 2009, 16:09
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Sep 6 2009, 16:23
|

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

|
Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!! А производители компиляторов уже подстраиваются под конкретного производителя процессоров.
Ну, и программу процессор никак не понимает. Он видит из нее исключительно кусочки по одной команде. И ему глубоко наплевать на остальное. И если вместо настоящиъх кодов ему подсунуть фигню, он все равно будет чего-то делать. В смысле, фигню. Процессор никогда не стоит без дела. Всегда извлекает команды и выполняет. (Есть особые случаи, когда он ничего не делает, но это - особые случаи).
И когда память команд заканчивается, он продолжает засасывать команды из воздуха.
Сообщение отредактировал DpInRock - Sep 6 2009, 16:35
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Sep 6 2009, 16:34
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(Vagant @ Sep 6 2009, 19:09)  А вот почему, например, одно 8-ми (или 16-ричное) число является кодом процессора а другое нет?
P.S. Спасибо, Хоровиц у меня есть - буду читать. Поищите древнюю книгу Б.Соучека. Микропроцессор по молекулам разжеван. Основу процессора составляет жесткая комбинационная схема с регистром команд на входе. Команда тактовым импульсом защелкивается в регистре и схема выдает все необходимые сигналы на коммутаторы, подключая к арифметическому устройству нужные регистры. В следующем такте результат с выхода АЛУ защелкивается в выходном регистре (аккумуляторе), а во входном - следующая команда. Поле команды разбивается изготовителем на определенные зоны для описания адресов операндов и, собственно, самой процедуры, которую нужно выполнить. В принципе, формат команды может быть задан произвольным, но под него нужна более сложная в проектировании комбинационная схема. Как отличаются числа от команд? Обычно, первое слово - команда. В нем, при необходимости и указывают будут ли последующие слова числами или командами и сколько их будет, если команда сложная, из нескольких слов. Все это "расшивается" (дешифруется) все в той же комбинационной схеме при расшифровке поля команды. Структура команд, полей адресов и данных у разных процессоров крайне разнообразна. Тут можно только самые общие принципы очертить.
|
|
|
|
|
Sep 6 2009, 16:34
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(DpInRock @ Sep 6 2009, 19:23)  Производитель процессоров сказал - код такой-то - такая команда, сякой-то - сякая. А код эдакий - вобще не команда, а отстой. Запрещаю!!! А производители компиляторов уже подстраиваются под конкретного производителя процессоров. Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне?
|
|
|
|
|
Sep 6 2009, 17:16
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-06-04
Пользователь №: 85

|
Цитата(Vagant @ Sep 6 2009, 20:34)  Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? На физическом уровне все устройства в процессоре работают с двумя уровнями напряжения 0 и 3V. Если процессору подается на 8 разрядную шину 8 разных уровней напряжения,он смотрит какие из них 0V, какие 3V. И в ответ выполняет работу в соответствии с полученной информацией. И точно также выставляет на своих выводах уровни 0V и 3V в зависимости от того, какой результат его вычислений. 0V считается логическим нулем, 3V считается логической единицей.Но процессор этого не знает. Нули и единицы это для людей. Процессор работает только с напряжениями.
|
|
|
|
|
Sep 6 2009, 18:01
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(Vagant @ Sep 6 2009, 20:34)  Понятно. А выполнение кода команды происходит в процессоре на логическом и/или физическом уровне? Простите, а Вы цифровую схемотехнику где-нибудь проходили? Чтобы разобраться с вопросом, надо знать, что такое сумматор, арифметико-логическое устройство, устройство управления, микропрограмма. Дело в том, что любой алгоритм, изложенный формально, неважно на чем, можно представить двояко: 1. В виде параллельно-последовательной схемы. 2. В виде последовательности команд (операторов). Что в настоящее время и происходит. Люди, умеющие писать программы на С, выбирают микроконтроллеры, а те, кто изучил тот же С, но несколько модифицированный, занимаются FPGA, CPLD и прочей твердотельной гадостью.
|
|
|
|
|
Sep 6 2009, 18:44
|
Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 3-07-09
Пользователь №: 50 897

|
Цитата(DpInRock @ Sep 6 2009, 18:19)  коды придумывает изготовитель микропроцессоров. От фонаря. Я бы не сказал что от фонаря. Когда я писал свой синтезируемый процессор, я выбирал далеко не от фонаря.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|