gpt4 book ai didi

从 masm 64 调用 C 函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:46 24 4
gpt4 key购买 nike

我的汇编代码有问题(win8 64 上的 Visual 2013 中的 64 位 masm)。当我调用 C 函数 (printf) 时,它从 ntdll.dll 中抛出异常。我做错了什么?我如何在 64 位 masm 中从控制台读取和写入数据?我在哪里可以找到 masm 64 位的好教程?

extrn printf : proc
.data
format byte "Arg1: %d", 10, 0

.code
printData proc

mov rbx, 100
push rbx

lea rax, format; format address
push rax

call printf; throw unhandled exception ntdll.dll - Access violation reading location 0xFFFFFFFFFFFFFFFF.
add rsp, 16 ;2* 64bit value

ret
printData endp
end

P.S 我正在从 C++ 代码调用 printData。

最佳答案

Windows x64 calling convention要求您传递以 RCX 开头的参数,如果需要,随后是 RDX、R8 和 R9。在这种情况下,您可能只需要 RCX 来存储格式的地址,而 RDX 是您要打印的整数值。

关于从 masm 64 调用 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29390886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com