Если я правильно понял, то у него нет меток никаких, записываются абсолютные адреса переходов. Тогда это не язык ассемблера, а самый обычный машинный код (только что идентификаторы команд текстовые, а не числовые) и его интерпретатор.
Удачи вам в программировании на «ассемблере» без символьных адресов. Вставка/удаление инструкций приведет к необходимости правки всех адресов переходов.
По-вашему, разница между языком ассемблера и машинными кодами лишь в наличии относительной адресации? И добавление к машинным кодам оной делает из них ассемблер? Процитировав вас же, пожелаю вам удачи в программировании на таком ассемблере.
Я говорю не про относительную адресацию, а про символьную адресацию (переход по метке, именование регионов данных). Я утверждаю, что программирование на языке ассемблера без символьной адресации — это то же самое, что программировать в машинных кодах.
Есть у вас замечательный цикл на три экрана ассемблера с отрицательным относительным переходом в конце. Хотите вставить инструкцию в середину цикла? Тогда вам придется пересчитывать отнсительный адрес перехода. Каноническая упрощенная реализация ассемблера в первом проходе как раз собирает информацию о метках, чтобы вторым проходом генерить все переходы.
Первые свои программы на ассемблере я писал на листочке в клеточку. Компьютера у меня тогда не было. Трассировал тоже в голове. Когда дошло дело до железа перевел все (уже отлаженное в голове и многократно правленное) из мнемоник в хексы, расставил адреса и вбил через шестнадцатеричную клавиатуру программатора в ПЗУ.
не путайте чтоль язык и инструмент его реализующий.
И да, я считаю что разница между ними в следующих вещах. Ассемблер дает:
мнемонические имена для команд, регистров
генерация нетривиальных комманд (режими адрессации, префиксы и т.д.)
символы (адресация, переходы, загрузка данных)
Первые два пункта — не беда, немного практики и просто наизусть уже запоминаешь, что значит 0x55 (push rbp для x86_64).
А вот последний пункт — это фатальная проблема при разработке сколько-нибудь сложных программ. Потому что отсутствие, например, переходов по символам, делает невозможным какое-либо редактирование программы (читай «очень-очень-очень сложным»).
Я согласен с Вами. и вот почему.
Язык ассемблера должен быть понятен человеку, но еще не машине.
Для выполнения на машине, он должен быть оттранслирован.
Процессор x86 читает байты- мненмоники команд и потом — операнды.
Предположим на минуточку, если бы в памяти кода, вместо числовых кодов — были бы строки, которые процессор разбирал.
Да, у нас были бы читаемые мнемоники, но суть от этого не особо изменилась — это все равно машинный язык.
В листе Excel — машиной является процессор выражений листа и условия в ячейках, написанные автором.
Я могу с чистой совестью утверждать, что первые четыре столбца понятны этой машине.
Поскольку дополнительного преобразования (изменения структуры программы, блоков, разворачивание процедур, подстановки адресов) не делается, то назвать это Ассемблером будет громко.
В дополнение этому, я не вижу здесь никаких команд, которые будут понятны только ассемблеру, и при этом не будут являться выходным машинным кодом. Вроде директив.
И кто-нибудь уже ответит мне, чем же по вашему отличается данный Exembly (авторское название проекта) от интерпретатора машинного кода кроме наличия мнемонических имен для команд и регистров?
Ну так на олимпиаде нужно решать задачи максимально быстро и рационально, как раз-таки.
Почему-то я не слышал, чтобы кто-нибудь на олимпиадах быструю сортировку на асме писал.
Это мне напомнило случай, когда я был на олимпиаде школьников. Тогда я после окончания спросил у парня, который сидел рядом (он, кстати, стал победителем), как решать одну из задач. Он начал мне рассказывать про хеш-функции о многих других вещах, о которых я понятия не имел.
Разумеется, мой алгоритм и рядом не стоял.
Так вот после окончания олимпиады на разборе этой задачи был показан алгоритм, схожий с моим, и была фраза:
Еще ее, конечно, можно было решить с помощью хеш-функций, <много умных слов>, но это уже излишние усложнения и трата времени.
Ну это зависит от конкурсных условий конкретной олимпиады. Если нет ограничения по времени, но есть масса других, а в приоритет идет оригинальный подход, то почему бы и нет?
Assembler в 30 строк на Excel