Извините, если это глупые вопросы или они не относятся к этому сайту. Я действительно не знаю, где еще я мог бы спросить это.

Хорошо, во-первых, я не очень понимаю, как работают наборы команд на микропроцессорах. Они реализованы через ассемблер? Использует ли Intel одни и те же наборы команд для всех микропроцессоров линейки процессоров, таких как Haswell или Ivy Bridge, или каждый конкретный микропроцессор отличается? Я всегда думал, что микроархитектура - это то же самое, что набор инструкций, но, очевидно, это не так. Может ли кто-нибудь объяснить мне это? И последнее: есть ли место, где можно просматривать наборы инструкций микропроцессоров Intel или AMD?

Заранее большое спасибо.

1 ответ1

5

Если вам нужен список инструкций для какого-либо ЦП, как правило, вам нужен справочник по наборам команд этого ЦП или справочник программистов.

Intel: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

AMD: http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/ (Руководства программиста по архитектуре - это то, что вам нужно)

Intel имеет несколько процессорных архитектур, причем x86 является ее (и самой) самой популярной. x86 был (и продолжает) расширяться с течением времени, как правило, более поздние версии обратно совместимы с более ранними версиями. Например, первый процессор архитектуры Intel x86 был 8088. Затем вышел 80286. Он расширяет набор инструкций 8088. 80286 понимает все 8088 сборки. И так далее в течение 80386, 80486, Pentium, серии Core и серии i.

Я всегда думал, что микроархитектура - это то же самое, что набор команд

Нет. Микроархитектура "ниже" и реализует основную архитектуру. В этом случае Intel имеет много микроархитектур, которые реализуют различные ревизии набора команд x86. Микроархитектура - это не то, о чем вам нужно беспокоиться в целях изучения программирования на ассемблере. Вам нужно знать, какую версию x86 (или архитектуру, а не микроархитектуру ) вы используете, как, например, в Pentium есть инструкции, которых нет у процессоров 80386. Возможно, вы захотите начать с книги или чего-нибудь, что научит вас программировать 8088, так как это будет проще, и последующие версии архитектуры (286, 386 и т.д.) Будут основаны на нем.

Хорошо, во-первых, я не очень понимаю, как работают наборы команд на микропроцессорах. Они реализованы через ассемблер?

Язык ассемблера позволяет программисту писать машинный язык с использованием чего-то, напоминающего читаемый человеком текст, и обычно позволяет использовать метки вместо запоминания необработанных адресов ОЗУ или ввода-вывода. Альтернативой может быть ввод кодов операций каждой инструкции вручную, что является очень утомительным заданием, учитывая количество команд и режимы адресации, которые имеет x86.

Каждая инструкция представлена мнемоникой и переводится в одну инструкцию на машинном языке. Ассемблер возьмет ваш ассемблерный код (в текстовом файле) и соберет (НЕ компилирует) его в двоичный образ, который может запустить ЦПУ.

AMD скопировала набор инструкций Intel, но начала расходиться с инструкциями SSE, инструкциями VMM и, возможно, другими вещами. Тем не менее, большая часть того, что вы изучите для сборки Intel, будет применяться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .