Я буду идти вразрез с мелкой частицей здесь и говорить "Да"
, я переключаюсь от Гражданского строительства до программирования (Бетон Сосет!). Мое математическое образование состоит из обычного первого материала года, второе и третье Исчисление года (Различный EQ, интеграция объема, Ряд, преобразования Фурье и преобразования Лапласа) и Числовой Аналитический ход.
я нахожу, что моей математике невероятно недостает программирования. Существуют все области Дискретной математики и логики, которую я пропускаю, и я только выживаю из-за обширной библиотеки учебников, Википедии и Вольфрама. Большинство усовершенствованных алгоритмов основано на высшей математике, и я не могу разработать усовершенствованные алгоритмы, не проводя обширное исследование (По существу эквивалент ценности полукурса работы.) Я, конечно, не могу придумать НОВЫЕ алгоритмы, поскольку у меня просто нет математических основ как плеч гигантов, на которых можно стоять.
Я не знаю об этих двух конкретных инструментах, но есть некоторые инструкции, которые можно закодировать по-разному:
ADD AX, 1
либо 05 01
или 81 c0 01
или fe c0
INT 3
либо cc
, либо cd 03
Это всего лишь несколько примеров того, как ассемблеры могут кодировать одну и ту же инструкцию по-разному, так что вопрос действительно имеет смысл.
В качестве примечания по синтаксису. Вы можете заставить GAS отлично работать с синтаксисом Intel, поместив следующую строку вверху исходного файла:
.intel_syntax noprefix
Я тоже использую синтаксис Intel для всех моих ассиметричных потребностей. Это кажется гораздо более естественным, чем синтаксис AT&T. И это экономит некоторые нажатия клавиш: -).
Когда вы пишете на ассемблере, вы точно описываете инструкции для генерации , поэтому это не зависит от ассемблера. Это зависит от тебя. Существует взаимно однозначное соответствие между мнемоникой, которую вы пишете, и фактическими инструкциями в машинном коде.
Это сборщик ... он не оптимизирует код. Он просто переводится как есть. Таким образом, самый быстрый и чистый код создается программистом или компилятором
Очевидно nasm, потому что синтаксис Intel выглядит намного чище, чем синтаксис AT&T.
@ Брайан: вопрос был не в этом ...
@ cyber98834: Что ж, ассемблер делает то, что должен делать каждый ассемблер: преобразовывать каждую инструкцию в свой код операции.
Здесь нет оптимизации.
Да и еще, нет такой вещи, как "самый быстрый код" ... Могу я вас спросить вопрос ? Скорость процессора статична, не так ли?
Итак, вы не можете заставить код работать быстрее, потому что вы не можете изменить скорость процессора.
Но вы можете уменьшить код, чтобы процессор обрабатывал меньше инструкций, и поэтому требуется меньше времени для выполнения.
Надеюсь, вы понимаете, что я пытаюсь сказать.
Я предлагаю вам купить (или поискать какие-нибудь файлы в формате PDF, но я не знаю Если это законно) Черная книга Майкла Абраша по программированию графики, в которой содержится множество уроков по оптимизации.