Язык ассемблера - более одного типа? - PullRequest
18 голосов
/ 20 августа 2010

Я начинаю университет через несколько недель (степень разработки программного обеспечения) и знаю, что один из модулей, которые я буду изучать в первый год, - это «основы архитектуры» или что-то подобное;в основном, это обучение программированию на «ассемблере».

Я хочу пройти некоторое базовое обучение, поэтому я готов к этому (я сделал то же самое на некоторых других устройствах), но не знаюесли существует более одного «ассемблера».Сколько их там?Это один на производителя, 32-битный и 64-битный язык или только один стандарт?

Если существует более одного типа, какой из них является наиболее «популярным» или может преподаваться на университетском уровне?

Ответы [ 3 ]

27 голосов
/ 20 августа 2010

Существует множество типов языков ассемблера.В настоящее время наиболее популярными являются ARM, MIPS и x86.ARM используется на многих мобильных телефонах и многих встроенных системах.MIPS популярен на процессорах IBM и встречается на таких системах, как Mac, некоторые игровые приставки и некоторые, которые, я уверен, мне не хватает.Ассемблер x86 используется на компьютерах Intel.Каждый вариант имеет разные версии, которые охватывают диапазон от 16-битных до 64-битных инструкций.Суть сборки в том, что старые архитектуры, как правило, умирают, и появляются новые, но основные вещи, которые делают системы в стиле RISC, в основном одинаковы.Это просто вопрос изучения мнемоники между системами.Move, Mov, Load и т. Д. Все загружают регистр со значением.Это как любой другой язык на самом деле.Как только вы изучите один, довольно легко подобрать новые.Некоторые старые, с которыми вы можете столкнуться, это Z80, 68000, 6502 и 6510 - в зависимости от того, насколько далеко вы хотите вернуться назад.

Надеюсь, это поможет.

8 голосов
/ 20 августа 2010

но не знаю, существует ли более одного «ассемблера»

Разные ассемблеры (например, GNU и Microsoft) для одного и того же процессора могут иметь разный синтаксис языка ассемблера; но разница тривиальна, потому что они оба нацелены на один и тот же ЦП, и между инструкциями по сборке и кодами ЦП есть сопоставление 1: 1 (если вы игнорируете макросы).

Большая разница между процессорами разных типов.

Иногда разные процессоры поддерживают одни и те же коды операций (и поэтому могут быть предназначены для одних и тех же ассемблеров), потому что они разработаны для совместимости или конкуренции друг с другом, выполняя один и тот же машинный язык.

Но иногда они отличаются: см. Список архитектур набора команд .

1 голос
/ 10 мая 2019

В общем:

  • должен быть хотя бы один совершенно другой язык ассемблера для каждого типа процессора (поскольку язык ассемблера напрямую связан с машинным кодом).

  • для каждого из них может быть 2 или более категорий ассемблера (например, «Синтаксис Intel» и «Синтаксис AT & T»).

  • для каждогоиз них может быть много диалектов, с небольшими вариациями в синтаксисе инструкций, совершенно разных препроцессоров и совершенно разных директив.

If (с использованием случайных чисел, взятых из воздуха)вы предполагаете, что есть 50 различных типов процессоров, в среднем 1,5 категории используются для каждого процессора, и в среднем 2 диалекта на категорию;тогда получится 150 различных языков ассемблера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...