Meh*_*dad 5 windows 64-bit win64 calling-convention
我已经阅读了微软的文档,但是这个方案太尴尬了,我想我会仔细检查以确保我正确理解它...
我的理解是通过参数传递的通用方法是这样的:
--- bottom of stack ---
(return address)
[shadow space for arg 1]
[shadow space for arg 2]
[shadow space for arg 3]
[shadow space for arg 4]
arg N
arg N - 1
arg N - 2
...
arg 6
arg 5
---- top of stack -----
Run Code Online (Sandbox Code Playgroud)
实施时似乎很尴尬va_arg
......这实际上是否正确?
正确的图表是
--- Bottom of stack --- RSP + size (higher addresses)
arg N
arg N - 1
arg N - 2
...
arg 6
arg 5
[shadow space for arg 4]
[shadow space for arg 3]
[shadow space for arg 2]
[shadow space for arg 1]
(return address)
---- Top of stack ----- RSP (lower addresses)
[grows downward]
Run Code Online (Sandbox Code Playgroud)
返回地址位于堆栈的顶部(最近推送),后面是前四个参数的阴影空间,后跟参数5和之后.
参数从右向左推:最后一个参数(N)被推动,因此它最接近堆栈的底部.
归档时间: |
|
查看次数: |
1755 次 |
最近记录: |