КРАМ писал(а):Вы не поверите, но АСМ имеет ровно такие же "типичные" манипуляции. Только синтаксис их немного иной. Но разве в разных ЯВУ синтаксис не отличается?
в том-то и дело, что согласно той концепции, которой придерживаюсь я, все абсолютно логично и в ассемблере, и в ЯВУ! это у в ваших рассуждениях есть логический провал, который вы не замечаете...
вот смотрите: в ЯВУ есть оператор присваивания, который присвоит одной переменной значение другой. оставим за рамками вопрос совместимости типов и т.п. неявных преобразований при этом. в ассемблере есть мнемоника MOV (допустим, только эта), которая ФОРМАЛЬНО делает то же самое, но... но только для НАТИВНЫХ данных - регистров и констант "под их размер". ни о каких "переменных" ненативных размеров (области памяти, которые вы всуе упоминаете) тут речь не идет! не перешлет команда MOV 18 байт, т.е. строку, например!
то есть ровно то, о чем я и говорю: в ассемблере нет реализации "стандартной" поддержки "переменных". тот факт, что вы можете написать АЛГОРИТМ (подпрограмму), которая выполнит эту задачу, отнюдь не делает "обычное" понятие ПЕРЕМЕННОЙ частью ЯЗЫКА ассемблера!
КРАМ писал(а):внутренняя логика моего АСМ кода ничем не противоречит сущностям Си и элементарно встраивается как часть общего кода для трансляции?
при чем тут сущности Си? а сущностям питона или Алгола с Фортраном противоречит? встраивание "сущностей" обеспечивается простым соглашением о передаче параметров, или "интерфейсом", за которым может быть что угодно. и ни о какой ПОДДЕРЖКЕ на уровне ЯЗЫКА это не говорит - это уровень поддержки "программиста".
КРАМ писал(а):Разве в MCS51 есть однобитная арифметика? Вы вообще о чем?
на уровне мнемоник ассемблера - да, есть.
КРАМ писал(а):это не значит, что можно физически адресовать каждый бит
не каждый, а только любой из выделенной под это области. разве это что-то меняет В АССЕМБЛЕРЕ? грубо говоря, битоадресуемая область ОЗУ всего 32 байта (не помню, сколько точно).
КРАМ писал(а):Этот номер бита сам должен быть переменной-указателем.
ну, это ВАМ так хочется. косвенная адресация вообще поначалу была экзотикой.
КРАМ писал(а):То есть какой нибудь флешевый ЕЕПРОМ, если он аппаратно не расположен в адресном пространстве оперативной памяти, не может быть областью для переменных, поскольку даже специальный код в виде функции возвращающей значение регистра данных этого флеша будет давать лишь КОПИЮ этого значения в реальном ОЗУ.
ну вот, опять логическая яма... команда МОV в ассемблере создает КОПИЮ данных - и что? я ведь ранее говорил - надо четко оговорить терминологию, то есть дать однозначное определение термина ПЕРЕМЕННАЯ. я даю такое: переменная - это хранилище данных. это самый высший уровень абстракции, ниже идут всякие побочные ответвления в виде "неизменяемых данных", "данных временного хранения" и "долговременно хранимых" данных, "удаленных данных" и т.п.
и свойство копируемости данных - это базовое свойство любой переменной, встроенное В ЯЗЫК ПРОГРАММИРОВАНИЯ, равно как и свойство "замещения данных" в ней (с ограничениями в виде побочных ветвей).
не называть же, в самом деле, переменными ячейки ОЗУ и регистры ядра микроконтроллера/процессора?! данные не ограничиваются по размерности только нативными для платформы величинами, а переменные обязаны уметь "вмещать" в себя (со всеми остальными свойствами) любые данные.