Легенда об ассемблере
Я смотрю об ассемблере (вероятно речь идёт про ассемблер для Intel x86) легенды слагают:
Наиболее продвинутые ассемблеры содержали такие фишки, как имитация стека и вызова функций, а наиболее продвинутые программисты умели этими фишками пользоваться.
Стек в ассемблере есть — команды PUSH/POP, вызов функции — CALL, возврат — разнообразные RET. Никакой имитации.
Однако, ассемблер был низкоуровневым языком: в нем отсутствовали даже такие элементарные команды, как умножение и деление, которые разработчикам приходилось описывать вручную с помощью низкоуровневых команд.
Умножение и деление: MUL и DIV (есть ещё IMUL и IDIV), умножать и делить можно
Поэтому, на смену ассемблеру пришли языки высокого уровня. Ассемблер при этом физически никуда не делся — все программы на высокоуровневых языках компилируются во все тот же ассемблерный код. В уродский неэффективный ассемблерный код.
Не поэтому, почему — отдельный вопрос, но вовсе не потому, что было мало ассемблерных библиотек для реализации
Комментарии 33
Может, они о более древних временах? ^_^
(Когда я на «Спектруме» программировал — там с умножением плохо было. О_о)
Впрочем, я не на тот вопрос отвечаю. Думаю, что автор статьи вряд ли говорит о древних временах. Там контекст другой.
На редкость бестолковая статья ни о чем.
Ну да.:-)
С остроумным пятибайтным представлением чисел
(Хотя, если результат умножения за 2 байта не выходил, число оставалось целым, да ^_^)
Но был же! В любом случае, автор, судя по всем, рассматривает
Если быть совсем точным, то 486DX
486SX не имел встроеного математического сопроцессора.
Эх, Спектрум…
В замечательном журнале
Ностальгия… =)
Ох, да. Мы с братишкой тоже туда пару писем писали: всякие там бесконечные жизни и адаптации игр: у нас на компе
Другой проблемой были машины, где упомянутый порт выдавал не 255, а другие цифры (например, в
На самом деле вопрос во что компилируется программа на языке высокого уровня — сложный. Сейчас многие (некоторые?) кодогенераторы выдают действительно ассемблерный текст, который потом скармливается системному ассемблеру. Взять хоть тот же gcc для примера
бывает и так
P.S. Не могу оставить тут сообщение с логином Gmail =/
Я предполагаю, что человек говорит о Intel x86. Я за свою жизнь программировал на трёх ассемблерах. В двух действительно не было операций деления и умножения (в Z80 — не было, а по поводу процессора
Конечно, есть вероятность, что он как раз говорит о
Под вечер дня ему там навешали, ага:
«Машинный код в общем случае — родной язык процессора. В случае с PC это ассемблер. Теоретически возможны процессоры с нативным кодом другого порядка. В бинарных файлах он содержится не в виде команд, а в виде 16ричных чисел, которые и означают эти команды(буквенные mov, cmp, xor — по сути мнемоники для человека), достаточно открыть файл 16риным редактором и переключиться в режим ASM. Ну и порадуйте себя, почитайте про форматы исполняемых файлов PE, ELF…»
Недавно, кстати, freebsd.org открыла официальный форум — списки рассылки и IRC не устраивают текущее поколение. Ожидаем доставки эпических легенд.
По спискам рассылок и IRC я бы не стал плакать. Народу всё больше, среда, соответственно, тоже меняется, это неизбежно.
Вы такую хрень ещё и читаете? :)