2016-09-06 3 views
0

Прочитал о сборке, часть о соглашениях вызова процедур в сборке (особенно в Linux).как передать printf более 8 значений с плавающей запятой в сборке

Говорят, первые параметры 8 с плавающей точкой передаются через xmm0 - xmm15 и другие параметры в регистрах rdi, rsi, rdx, rcx, r8, r9, и другие остальные параметры должны быть прижаты к стек в обратном порядке.

Что делать, если у меня есть более 8 параметров с плавающей запятой и более 6 других параметров, в каком порядке нужно их толкнуть? Первые значения с плавающей запятой, которые не соответствуют 8 fp. регистры или другие параметры, которые не соответствуют 6 регистрам?

ответ

2

Какая часть документа ABI неясна (https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI)?

Вы спрашиваете, что произойдет, если есть сочетание аргументов int и fp, и вы исчерпали оба типа регистров, проходящих через arg?

IIRC, они просто идут в стек в обратном порядке, с последним аргументом на самом высоком адресе, а первый нерегистрационный аргумент находится над обратным адресом. Это похоже на 32-битный код, где args всегда передаются в стек.

См. Также http://wiki.osdev.org/System_V_ABI, и тег wiki.

+0

Является ли это авторским проектом, может ли он использоваться для справки? На титульной странице написано несколько имен, о которых я никогда не слышал. –

+0

@BulatM. Да, эта страница ссылается на официальную текущую версию стандартного документа. например * * Версия 252 psABI x86-64 можно загрузить с [здесь] (https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-r252.pdf) * ". К сожалению, документ не всегда полностью документирует все, на что ссылаются компиляторы, но все, что он говорит, является точным. Единственное исключение, о котором я знаю, это [zero/sign, расширяющий узловые целые аргументы до 32-битных] (http://stackoverflow.com/questions/36706721/is-a-sign-or-zero-extension-required-when-adding -a-32-битное смещение к-а-указатель-на/36760539 # 36760539). –

+0

Копия документов ABI была опубликована на http://www.x86-64.org/documentation.html, но x86-64.org уже несколько месяцев был мертв. –

 Смежные вопросы

  • Нет связанных вопросов^_^