Thu Jan 20 01:18:25 2011: Request 55660 was acted upon.
Transaction: Correspondence added by jain_vipin_swm
Queue: Win32-API
Subject: [PATCH] Partial win64 support for Win32::API
Broken in: (no value)
Severity: (no value)
Owner: COSIMO
Requestors: [email protected], [email protected]
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=55660 >
On Wed Mar 17 10:09:53 2010, [email protected] wrote:
> The attached three patches (against Win32-API-0.59) implement initial
> support for 64-bit Windows in Win32-API.
>
> I didn't attempt to
> port Win32::API::Callback. It looks like considerably more effort
> than Win32::API itself, and as our application doesn't need it I
> couldn't justify the paid time to spend on it. This is, however,
> sufficient for Win32::API tests to pass against a 64-bit ActivePerl
> 5.8.9.
>
> At present, only MSVC++ toolchains will work, as its
> assembly dialect is different from GNU. I don't have a gcc-based
> build of Perl to work with to port it, but it should only require a
> straightforward translation of call_asm_x64_msvc.asm into
> call_asm_x64_gnu.asm.
>
> The required changes to Makefile.PL are
> also somewhat hackish, purely because I don't know of a better way
> to detect what architecture we're targeting.
>
> Accelrys Limited
> (http://accelrys.com)
> Registered office: 334 Cambridge Science
> Park, Cambridge, CB4 0WN, UK
> Registered in England: 2326316
I attached a patch to fix a bug when Windows API is used which requires
> 4 parameters.
-Vipin
diff --git a/call_asm_x64_msvc.asm b/call_asm_x64_msvc.asm
index 7f8b2b0..43e8941 100755
--- a/call_asm_x64_msvc.asm
+++ b/call_asm_x64_msvc.asm
@@ -38,12 +38,11 @@ Call_x64_real PROC FRAME
; Except not if there isn't any
test rax, rax
jz docall
- sub rax, 1
copystack:
+ sub rax, 1
mov r10, qword ptr [rsi+8*rax]
push r10
- sub rax, 1
test rax, rax
jnz copystack