2 messaggi dal 13 settembre 2004
Salve,
ho un problema con un'applicazione 32 bit che ho intenzione di trasformare a 64 bit.
A 32 bit funzionava tutto, ma dopo aver migliorato l'hardware volevo provarne il fnuzionamento a 64 bit.
Il probelma è tutto nel passaggio dei parametri ad una dll scritta in Assembler (anche quella portata a 64 bit)
Ecco il codice:
VB:
Private Declare Sub SUBLONG5 Lib "Codes64" (ByRef i1 As Long, ByVal cm As Long, ByRef c1 As Long, ByRef y1 As Long, ByRef p As Long, ByVal cmm As Long, ByRef c As Long)...
'All parameters are long-type
Call SUBLONG5(i1(j1m), cm, c1, y1, p(mi), cmm, c(mi))
....

Assembler:
SUBLONG5 FRAME i1,cm,c1,y1,p,cmm,cc

mov rax,[rsp+40] ; [y1]
mov rbx,[rax]

mov rdi,[rsp+16] ; [i1]

mov rsi,[rdi+rbx*8] ; mov x1,i1(y1)

mov [rax],rsi

mov rax,[rsp+32]
mov [rax],rdi
....
....
ret
SUBLONG5 ENDF

Il problema sta nel passaggio dei parametri che sono array (anche se poi vengono passati tutti long).
I valori degli array sono passati ByRef perchè dentro la procedura Assembler ho bisogno di scorrere gli elementi degli array.
C' è per caso un problema con la rappresentazione in memoria degli array del VB?
Oppure può essere un problema di come il VB mette i valori nello stack? C'è qualcuno in grado di aiutarmi?

Alessio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC