Я узнал из Kip Irvine's книга. Если вы проигнорируете (справедливую) критику своих (нерелевантных) библиотек, я могу порекомендовать ее как хорошее введение в язык самого себя, хотя для действительно интересного материала, который вы должны искать навязчивых идей в сети.
Я думаю, что полезно понять, что происходит на нижних уровнях. Когда вы изучаете ассемблер, вы узнаете о конвейерной обработке процессора, предсказании ветвлений, выравнивании кеша, SIMD, переупорядочении команд и т. Д. Знание этих данных поможет вам лучше писать код высокого уровня.
Кроме того, общепринятая мудрость заключается в том, чтобы не пытаться вручную оптимизировать сборку большую часть времени, но пусть компилятор беспокоится об этом. Когда вы видите некоторые примеры извращенных вещей, которые генерируют компиляторы, вы поймете, почему традиционная мудрость сохраняется.
Пример: LFSR быстро запускаются с помощью команды rotate-with-carry, для конкретных случаев, таких как это, так же легко написать версию ассемблера, так как он должен выяснить, достаточно ли компилятор достаточно умен, чтобы понять это. Иногда you just know something что компилятор этого не делает.
Это также увеличивает ваше понимание вопросов безопасности - писать или-выполнить, стек перерасход и т.д.
Некоторых concurrency вопросы только становятся очевидными, когда вы знаете о том, что происходит на уровне каждого обучения.
Это может быть полезно иногда при отладке, если у вас нет полного исходного кода.
Есть ценность любопытства. Как все равно реализованы виртуальные функции? Вы когда-нибудь пытались писать DirectX или COM-программы в ассемблере? Как возвращаются большие структуры, выполняет ли вызывающая функция пространство для них или наоборот?
Тогда есть специальные языки ассемблера для графического оборудования, хотя несколько лет назад языки шейдеров вышли на высокий уровень, и все, что позволяет вам думать о проблеме по-другому, хорошо.
Обратите внимание, что язык ассемблера привязан к процессору/контроллеру. – rmflow
Вы имеете в виду, что это не кросс-платформенный? !! – ApprenticeHacker
Нет. Например: http://www.worldofspectrum.org/Z80instructions.html – rmflow