diff options
author | Niels Möller <nisse@lysator.liu.se> | 2012-02-27 10:55:00 +0100 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2012-02-27 10:55:00 +0100 |
commit | 754c4bbcdde860417380ad38f65a4ac520777452 (patch) | |
tree | a93cc0ebd6422e490c6b87d29da1d141ea736da8 /x86_64 | |
parent | ac5d2769a0403ad4222677f66e0ca94a092e841d (diff) | |
download | nettle-754c4bbcdde860417380ad38f65a4ac520777452.tar.gz |
Some more details on W64 stack arguments.
Diffstat (limited to 'x86_64')
-rw-r--r-- | x86_64/README | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/x86_64/README b/x86_64/README index fe6f2a8b..e8cb17b6 100644 --- a/x86_64/README +++ b/x86_64/README @@ -24,7 +24,7 @@ Registers May be Argument %r14 %r15 -w64 ABI, according to +W64 ABI, according to http://msdn.microsoft.com/en-us/library/9z1stfyw.aspx: Registers May be Argument @@ -51,3 +51,15 @@ Additional arguments are passed on the stack. "backing store" on the stack for the four register arguments is also required. %xmm6 to %xmm15 are callee-saved. The "long" type is just 32 bits. Nettle currently does *NOT* support this ABI. + +If we have five arguments, and push the additional callee-save +registers %rdi and %rsi on the stack, we get a stack frame like + +56(%rsp): Fifth argument +48(%rsp): Space for fourth argument +40(%rsp): Space for third argument +32(%rsp): Space for second argument +24(%rsp): Space for first argument +16(%rsp): Return address +8(%rsp): Saved %rsi +(%rsp) : Saved %rdi |