#assembly #integer #arguments #gnu-assembler #twos-complement
#сборка #целое число #аргументы #gnu-ассемблер #двойки-дополнение
Вопрос:
У меня возникли некоторые трудности с пониманием того, что означает следующее из as arguments page
:
Символы вычисляются с получением {section NNN}, где section является одним из text, data, bss, absolute или undefined . NNN — это 32-разрядное целое число со знаком, дополняющее 2.
Что было бы примером section NNN
? Является text
ли , data
, etc типом данных или это буквальное слово, которое используется в контексте? Наконец, почему в нем упоминается знаковое, дополняющее 2 32-разрядное целое число? Не являются ли все 32-разрядные целые числа 2 дополнением (по крайней мере, те, которые используются в программировании?)
Комментарии:
1. Существует также дополнение 1 и даже BCD. дополнение 2 в наши дни просто повсеместно. AFAIK, C является примером языка, который не требует / не требует представления дополнения с 1 или 2 битами.
2. Не являются ли все 32-разрядные целые числа дополнением 2 — нет, исторически существовали платформы, которые изначально использовали дополнение 1 и даже знак / величину. C допускает их как возможные представления для целочисленных типов со знаком, что позволяет C эффективно работать на таком оборудовании. Также, конечно, программное обеспечение и форматы файлов могут использовать другие кодировки, особенно если полезно иметь специальное значение «sentinel». Поэтому в документации должно быть указано это. Системы AFAIK GNU всегда используют дополнение 2 в качестве собственного аппаратного целочисленного формата для значений со знаком, например, GCC переносится только в такой HW.
3. Кроме того, в случае, если это не очевидно, конечно
unsigned
, широко используются целые числа. Чистое двоичное значение места, без специального «знакового» бита с другим значением. Таким образом, даже на основных процессорах x86 легко получить целое число, которое не является дополнением 2, а вместо этого беззнаковым. Я думаю, вы хотели сказать: «разве все 32-разрядные целые числа со знаком не являются дополнением 2?».4. @PeterCordes спасибо за объяснение, которое имеет смысл. Да, относительно
signed
.