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.
In primo piano

I più letti di oggi

Media
In evidenza
MISC