2012-02-23 4 views
3

Сборка - это язык, который я хотел бы изучить, но все же вы не часто слышите, что что-то было запрограммировано в сборке. Мой вопрос в том, что такое использование языка ассемблера? Он все еще используется?Использование языка ассемблера

+0

Сборка - ужасный язык программирования, который должен быть абсолютно без ошибок, например, драйверов. Возможно, некоторые части, но определенно не все. –

+0

На самом деле, я не знаю, как пользоваться этим языком. Мог бы также запрограммировать весь драйвер на другом языке и не делать некоторые части с Assembly тогда ..? – phadaphunk

+0

См. [Википедия] (http://en.wikipedia.org/wiki/Assembly_language). –

ответ

1

Язык сборки может иметь смысл в ряде ситуаций.

  1. Высокий объем, минимальная стоимость встроенных систем. Дополнительное оборудование для запуска чего-то типа C может быть непомерно высоким.
  2. Повышение эффективности.
  3. Доступ к оборудованию невозможен/доступен через языки более высокого уровня.

2 был важным, но в последние несколько десятилетий он почти угасал.

1

В настоящее время сборка в основном используется, когда язык высокого уровня по выбору не предоставляет программисту доступ к некоторым функциям ЦП, таким как векторные инструкции или предварительная выборка.

2

Язык ассемблера используется для преобразования языков программирования более высокого уровня, таких как C в машинный код. Процессоры могут запускать только машинный код - последовательность коротких, дискретных команд, закодированных в двоичном формате. Каждый раз, когда запускается любая программа, машинный код выполняется процессором. Язык ассемблера - это просто машиночитаемый вид машинного кода.

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

Причины вы могли бы написать программу на языке ассемблера:

  • Ваш профессор сказал вам
  • Вы не доверяете компилятору сгенерировать оптимизированный или работающий машинный код
  • Вы написание собственного компилятора или языка программирования

Общие языки ассемблера (и основные ISA)

3

Что сборка используется?

Короткий ответ: все связанное с программным обеспечением.

Используется ли он еще?

Короткий ответ: в его самой чистой форме, редко так. Косвенно он используется во всех программах.

Более длинный ответ:

Ассамблея является способом сделать сырой двоичный код читабелен. Когда первые компьютеры строились, можно было просто набирать инструкции для выполнения операции, однако по мере того, как компьютеры становились все более сложными, и необходимость в более сложных вычислениях возникала при наборе всех инструкций, составляющих программу в необработанных двоичных файлах, стала утомительной, очень утомительный. Рассмотрим программу длиной в 220 строк с использованием 8-битного кода операции и 16-разрядного для операндов (и/или регистров или адресов памяти), это будет означать, что каждая инструкция является 24-битной, то есть 24 нули и единицы длинной. Умножьте это на 220 (количество инструкций предполагает, что на каждой строке есть одна инструкция), и вы получаете 5280. Это количество нулей и единиц, на которые вы должны набрать номер, не совершив ни одной ошибки. Занудный и подверженный ошибкам.

Поэтому ученым-компьютерщикам пришла в голову идея использовать мнемонику для описания всех разных инструкций. Примером может служить аббревиатура 'mov', которая в сборке x86 означает «move». Он делает именно это, он перемещает (или фактически копирует) данные из одного места в другое. Это упрощает чтение и запись программ.

Потому что сборка - это просто использование слов и правил для описания двоичного кода, это ВСЕГДА самый быстрый. Вы говорите непосредственно с ЦП. Это одно из преимуществ.

Еще компьютеры стали еще более сложными, и программное обеспечение стало более продвинутым или, скорее, больше. Набрав несколько строк сборки, все хорошо, но, скажем, веб-браузер в сборке будет полной катастрофой, чтобы идти в ногу, есть так много данных, которые вам нужно отслеживать, и это легко сделать ошибку.

Таким образом были разработаны более совершенные языки. Языки, такие как C/C++, обычно называются языками высокого уровня, потому что они не говорят напрямую с ЦП. Такие языки часто используют встроенные функции, мини-ASM-программы, предназначенные для выполнения конкретной задачи. Можно сказать, что все языки программирования высокого уровня в основном представляют собой огромную библиотеку функций ASM.

Теперь, например, python был закодирован в C, сам C вызывает вызовы сборки и сборки двоичного кода. В принципе, чем выше мы получаем, тем больше диссоциированных мы получаем от ASM, но это еще ASM в CORE. Единственное различие заключается в том, что мы используем сами компьютеры для компиляции нашего читаемого человеком кода в двоичный файл.

Надеюсь, это все имеет смысл!

Смежные вопросы