Re[4]: Более удобное представление ассемблера...
От: Shmj Ниоткуда  
Дата: 06.11.25 13:27
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Я в своё время использовал встроенный ассемблер. В реальном режиме было очень удобно.


В реальном режиме — это под какую ОС?

Тут еще вопрос переносимости. Голый C++|C все-таки не привязан к архитектуре, более-менее соберется под все платформы. Если ассемблер в отдельных файлах, то можно настроить сборку и перевести сами файлы под конкретную платформу. Когда же все намешано внутри C-кода — это ужас.
=сначала спроси у GPT=
Re[5]: Более удобное представление ассемблера...
От: Privalov  
Дата: 06.11.25 13:33
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S>В реальном режиме — это под какую ОС?


MS DOS. Приходилось пару раз опускаться на уровень железа. Однажды даже для какого-то проекта русификатор клавиатуры встроенный сделал. Уже не помню, чем там коллег обычный драйвер не устроил. На встроенном ассемблере это оказалось очень просто.

S> Если ассемблер в отдельных файлах, то можно настроить сборку и перевести сами файлы под конкретную платформу. Когда же все намешано внутри C-кода — это ужас.


Так я ж писал: зе беспорядочное использование встроенного ассемблера надо отрывать руки.
Re[6]: Более удобное представление ассемблера...
От: Shmj Ниоткуда  
Дата: 06.11.25 13:40
Оценка:
Здравствуйте, Privalov, Вы писали:

P>MS DOS. Приходилось пару раз опускаться на уровень железа. Однажды даже для какого-то проекта русификатор клавиатуры встроенный сделал. Уже не помню, чем там коллег обычный драйвер не устроил. На встроенном ассемблере это оказалось очень просто.


И зачем после этого было опускаться до запросов на C#? Нужно было так и продолжить на низком уровне.
=сначала спроси у GPT=
Re[7]: Более удобное представление ассемблера...
От: Privalov  
Дата: 06.11.25 14:05
Оценка:
Здравствуйте, Shmj, Вы писали:

S>И зачем после этого было опускаться до запросов на C#? Нужно было так и продолжить на низком уровне.


Затем, что я работу сменил. Иногда мне приходилось JNI для проекта на Java делать. Тоже низкий уровень. Иногда мне нужно было кое-какие дополнения для виндовых editbox-ов делать.
А C# вспомнил потому, что достался мне в наследство один небольшой проект на нём. И вот там как раз и dynamic, и рефлексия разбросаны по всему коду. Повбывав бы.
Re[3]: Более удобное представление ассемблера...
От: CRT  
Дата: 06.11.25 14:16
Оценка: +2
Здравствуйте, Shmj, Вы писали:


S>А если немного синтаксического сахара? К примеру — метки с человеческим именем — ведь в машинных кодах это просто номер ячейки


Метки в ассемблере и так уже с человеческим именем, как и команды. В этом и есть смысл ассемблера — заменить числовые коды на человеческие легко запоминаемые имена.

Ассемблер — это взаимнооднозначное отображение команды ассемблера и ее операндов в машинную команду и операнды.

а вот это
if( eax > ebx ) then
stdout.put("eax > ebx", nl);
endif;

Это что такое? Никак не ассемблер.

С тем же успехом можно выучить наизусть как конструкции С++ переводятся в машинные команды и назвать С++ ассемблером.

Ну конечно у С++ есть оптимизатор поэтому одно и то же может в разные команды переводиться. Хорошо, допустим мы отключаем оптимизатор.
Re[3]: Более удобное представление ассемблера...
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.11.25 18:45
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>ассемблерные вставки?


Нет. Ассемблерные вставки — это костыли "от бедности". Правильный путь — псевдопеременные для обращения к регистрам и флагам, intrinsic-функции для выполнения спецкоманд процессора, и т.п.
Re[2]: Более удобное представление ассемблера...
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.11.25 18:48
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Был проект С-- (си минус минус) — пишешь почти на C, но в тоже время на асме.


Совершенно ничто не мешает иметь подобное хоть в обычном C, хоть в самом распоследнем C++.
Re[3]: Более удобное представление ассемблера...
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.11.25 19:00
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Это и есть ассемблер — ты не уходишь от регистров.


Любой язык, идущий "от ассемблера" (то есть, от системы команд), будет по определению архитектурно-зависимым, и с этим ничего не сделать.

Если же идти "от ЯВУ", то даже самые основные средства, вроде intrinsic-функций, реализующих операции, которые есть во многих архитектурах, решают примерно 80% задач, ради которых приходится использовать ассемблер.

Это как с графикой: если она определена в терминах растров, то может предельно эффективно работать на конкретной растровой платформе, но быть лишь очень криво реализуема на каких-нибудь векторных устройствах с полярными координатами. Если же она определена в терминах координат и фигур, то может быть реализована где угодно, с любой желаемой степенью эффективности, и перенесена так же куда угодно, разве что работать попервости будет не так быстро.

S>На ЯВУ — нет прямого доступа к регистрам.


В некоторых есть.

S>Просто чуть другой формат записи и немного синтаксического сахара.


А нету в нем практического смысла. Его еще лет тридцать-сорок назад не было, хотя по инерции продолжали добавлять в ассемблеры псевдоконструкции для условных операций, циклов, автоматическое формирование стековых кадров и прочего. А потом уже остался только один путь — снижать уровень наиболее подходящих ЯВУ. Повышать уровень ассемблера — абсурд.
Re[3]: Более удобное представление ассемблера...
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.11.25 19:01
Оценка:
Здравствуйте, AWSVladimir, Вы писали:

AWS>Макроассемблером вполне можно писать как на высоком языке программирования.


Зачем?
Re[6]: Более удобное представление ассемблера...
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.11.25 19:02
Оценка:
Здравствуйте, Privalov, Вы писали:

P>зе беспорядочное использование встроенного ассемблера надо отрывать руки.


А сам встроенный ассемблер — изживать в пользу более внятных языковых средств.
Re[7]: Более удобное представление ассемблера...
От: Privalov  
Дата: 07.11.25 16:09
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>А сам встроенный ассемблер — изживать в пользу более внятных языковых средств.


Это про использование всяких функций типа inport/outport и им подобных. Отчасти верно. но во многих случаях использование встроенного ассемблера было удобнее. И если встроенный ассемблер не использовать беспорядочно, то с этим вполне можно было жить. Те, кто работал на более высоком уровне, просто вызывали функцию, не интересуясь, как она сделана.
Re[8]: Более удобное представление ассемблера...
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 07.11.25 19:04
Оценка:
Здравствуйте, Privalov, Вы писали:

P>во многих случаях использование встроенного ассемблера было удобнее.


Оно не удобнее, а привычнее для программиста, знакомого с ассемблером, и проще для разработчика компилятора.
Re[3]: Более удобное представление ассемблера...
От: SergeyIT Россия  
Дата: 07.11.25 21:17
Оценка:
Здравствуйте, Shmj, Вы писали:

S> Далее — если вместо mov( ebx, eax ); — написать let ebx = eax; — что поменялось? Это тоже команда, просто в более удобном для восприятия виде.


Так приведи примеры для всех команд процессора и посмотрим удобно ли это...
Извините, я все еще учусь
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.