Hex - это читаемая человеком форма сериализации (например, для печати на консоли).
Целочисленное значение также является интерпретацией битов, например, без знака и со знаком.
Внутреннекомпьютер хранит все как двоичные строкиИтак, %esi
- это просто строка из 32 двоичных цифр, хотя биты упорядочены: начиная с единицы, обозначенной как младший значащий бит , и заканчивая самым старшим битом.
Эти 32-разрядные могут представлять 32-разрядный адрес, 32-разрядное целое число без знака, 32-разрядное целое число со знаком, 32-разрядное значение с плавающей запятой, перечисление, целых 4 байта или символы ASCII, или некоторые другиебитовый шаблон, как упакованное поле, или машинная инструкция.
Интерпретация на самом деле не в самом регистре, а в программе, которая его использует - закодирована в последовательностях команд своего машинного кода.
В Архитектура набора инструкций все доступные ресурсы с состоянием, такие как регистры ЦП, должны рассматриваться с точки зрения инструкций, поскольку они, по сути, являются единственным способом доступа к процессору.& memory) состояние.
Таким образом, если набор команд допускает разыменование регистра, то его можно разумно использовать для hстарый адрес или указатель.И если набор команд поддерживает умножение регистра, он может разумно содержать индекс, целое число со знаком или без знака.
Если набор инструкций не поддерживает некоторые операции, например, x86 не поддерживает 32-битовая арифметика с плавающей точкой на %esi
- эти регистры still могут использоваться для хранения 32-битного значения с плавающей точкой при переходе (например, копирование из одного местоположения в другое без арифметики).
Итак, чтобы понять, как кодировать n
в %esi
, нам нужно знать тип данных (например, со знаком или без знака), а затем метод кодирования для этого типа данных.Из этого следует битовая комбинация, которая будет храниться в упорядоченной строке %esi
из 32 битов.Эта статья в википедии, например, описывает многочисленные методы кодирования для целых чисел со знаком .Наиболее популярным для подписанного (а int
подписано) является дополнение 2 (а для беззнакового - просто простая двоичная (основа 2) интерпретация последовательно значащих бит).