Я читал о виртуальных машинах для языков, таких как C#, Java и т. Д., И я не могу понять одну из деталей, как процессор знает, сколько данных нужно писать. Предположим следующий синтаксис:Хранить переменную с определенной длиной в памяти
mov [A], 'A';
A - это виртуальный регистр, а «A» - только знак длины 8 бит. [A] означает, что в регистре есть адрес, в котором в памяти будет сохранена наша переменная. Предположим, что наш регистр имеет длину 32 бит. Как процессор узнает, что нам нужно только сохранить в памяти первый 1 байт, а другие 3 не имеют значения? Мы не можем просто загружать в память полные 32 бита, потому что мы что-то переоценили.
Единственная идея, которую я мог себе представить, - создать инструкции, специализированные инструкции, такие как mov byte, move word и т. Д. ... но я думаю, что это не лучшее решение.
Мой вопрос не является «специфичным для процессора», я хотел бы знать, что общего правила.
Размер операции действительно закодирован в инструкции. Синтаксис зависит от архитектуры, это может быть другая мнемоника или какой-то модификатор/суффикс или оператор. – Jester
Что вы подразумеваете под "others 3"? Размер регистра 'A' не имеет ничего общего с его * содержимым * или с семантикой операции перемещения. Как вы сами сказали: '[A]' означает 'использовать память, адрес которой хранится в 'A'. –
Другие 3 означает, что мы поместили в регистр, например, char и другие биты из наших первых 8 бит для нас неактуальны и не должны храниться в памяти. @Jester - вы бы представили простой пример? – Puchacz