честно говоря суть то уже давно понял
scturer, судя по тому, что ты говоришь, сути ты далеко не понял...
фактически получается что C/C++, Delphi, Basic это тот же самый ASM только модернизированный
Ничего подобного не "получается". C/C++, Delphi, Basic - это языки
высокого уровня, это принципиально другой инструментарий. В каком-то смысле это результат эволюции программирования. Однако существование ЯВУ (языков высокого уровня) не отменяет необходимости в ассемблере.
и некоторые компиляторы переводят код с начало в ASM а потом компилирует
соответственно достичь того же результата возможно,
Неожиданный вывод
Во-первых, язык высокого уровня не так близок к железу, как ассемблер (мнемокоды ассемблера - это, по сути, машинные команды, представленные в удобочитаемом для человека виде), и, следовательно, ЯВУ не позволяет задействовать потенциальные возможности аппаратного обеспечения на 100%. Пример: время доступа к данным в регистрах процессора гораздо меньше, чем время доступа к оперативной памяти. Когда ты пишешь программу на ассемблере, то можешь хранить некую наиболее часто используемую "переменную" в регистре, и только по завершении всех необходимых операций поместить значение переменной в оперативную память. Расскажи мне, как ты это сделашь, используя ЯВУ. Следовательно, программа, написанная на ассемблере, может работать значительно быстрее, чем программа на ЯВУ (хотя очень многое здесь зависит от программиста).
Во-вторых, программа на ассемблере компактнее (имеется в виду размер получаемого исполняемого файла), поскольку:
1) Одну и ту же операцию можно реализовать несколькими способами. Так, например, например, в eax у нас находится некое число. Нам нужно поместить в eax единицу. Сделать это можно двумя путями. Так:
либо так
Так вот, получившийся машинный код второго варианта короче на один байт.
Ассемблер позволяет оптимизировать всю программу требуемым образом, ориентируясь на скорость, размер или компромиссное решение между ними.
Ни один компилятор не сможет оптимизировать программу так, как сделает это опытный программист, пишуший программу на ассемблере.
2) В двоичный файл не "попадает" ничего лишнего
В-третьих, интересно было бы посмотреть, как ты на ЯВУ напишешь загрузчик ОС
.
Так что, думаю, тебе стоит
почитать соответствующую литературу, прежде чем вести подобные разговоры и делать какие-то выводы.
Помимо уже порекомендованных
Маратом материалов, советую почитать книгу
Олега Калашникова "Ассемблер? Это просто!" - написана очень увлекательно, - и книгу
Рудольфа Марека "Ассемблер на примерах" (там много примеров, приведены некоторые часто используемые фрагменты кода, а также изложены основы программирования на ассемблере под DOS и под Linux).
Удачи!