summaryrefslogtreecommitdiff
path: root/x86_64/README
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2012-02-27 10:55:00 +0100
committerNiels Möller <nisse@lysator.liu.se>2012-02-27 10:55:00 +0100
commit754c4bbcdde860417380ad38f65a4ac520777452 (patch)
treea93cc0ebd6422e490c6b87d29da1d141ea736da8 /x86_64/README
parentac5d2769a0403ad4222677f66e0ca94a092e841d (diff)
downloadnettle-754c4bbcdde860417380ad38f65a4ac520777452.tar.gz
Some more details on W64 stack arguments.
Diffstat (limited to 'x86_64/README')
-rw-r--r--x86_64/README14
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