2016-10-06 4 views
0

В каком порядке аргументы x64 толкнул в стек:Для того, что аргументы помещаются в стек на x64

  • в V ABI System?
  • в Windows ABI?

Я пишу библиотеку Java FFI, которая использует динамически создаваемые заглушки, и эти заглушки зависят от этого порядка.

I Подозреваемый что он «плавает первым», но не уверен.

+0

Вы знаете, что аргументы передаются в регистры тоже? Не только на стеке? – jcoder

+0

@jcoder Да, я. Я уже обработал случай всех целых аргументов в регистрах. – Demi

+0

Не знаю System V ABI, но IIRC, в Windows 64, ** регистры с плавающей запятой ** передаются в 'xmm0' до' xmm3' ** вместо ** 'rcx',' rdx', ' r8' и 'r9', поэтому, если аргументы являются' (int, double, int, double) ', они передаются в' rcx', 'xmm1',' r8' и 'xmm3' соответственно. Остальное, если таковое имеется, передается в стек, как описывает @MargaretBloom в своем ответе. –

ответ

1

От System V ABI, Section 3.2.3:

После регистры присваиваются аргументы, передаваемые в памяти выталкиваются на стек в обратном (справа налево) порядке.

Windows x64 ABI очень неформальный и не задает порядок параметров стека.
Однако из Wikipedia и здравый смысл мы можем к тому же выводу, что и выше:

Дополнительные аргументы в стек (справа налево)

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

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