> Не только понимание как работает железо, но и - как компиляторы.
> А, ассембрер это компилятор в котором программист заведо понимает как и что
> работает в сгенерированном коде, без его знания - не будет никакого
> понимания.Ассемблер это ассемблер. Трансляция мнемоник выполняется 1 в 1 в машинный код. Кроме синтаксиса и пары директив там учить нечего.
When instructions are represented symbolically, a subset of the IA-32 assembly language is used. In this subset, an instruction has the following format:
label: mnemonic argument1, argument2, argument3
Вот и всё.
> Другое дело что да, просто выучивание ассемблера, например в ВУЗах,
> обычно не приводит к полноценному понимаю оптимизаций, тут уже опыт в
> сфере именно оптимизаций и это не обязательно на ассемблере, но без
> знаний ассемблера это нереально или не полноценно.
Так выучили язык, как тут советовали, как набор мнемоник и копируют эти мнемоники. Хорошо бы понимать, что такое регистры, страницы, виртуальная память, как организуется стек и так далее. То есть выучивать надо железо. С таким пониманием можно почти на чём угодно писать "оптимально", когда потребуется.
> В общем, ещё и опыт именно в оптимизации нужен, а это не только книга по
> ассемблеру... К тому же, самые сильные оптимизации - даже не архитектурные,
> но без понимания архитектурных ограничений это затруднительно.
Да, не архитектурные, а алгоритмические. Кнут использует придуманный ассемблер с одной единственной целью -- что бы можно было точно подсчитать вычислительную сложность описанных им алгоритмов.
> Но, проблема даже не в этом, а в том что оптимизировать нужно
> хотеть желать (тратя время, а руководству т.о.инвестируя деньги), а без этого
> когда понадобится - уже поздно, даже при желании и выделении денег.