From: Alessio Brizi on
Hi,
I have a 32-bit software that functioned well, but after upgrading my
hardware, I wanted to transform this software in his 64-bit version.
It all works except for the parameters passing to an Assembler dll that I
wrote (even this is ported to 64-bit)
Here is the code:
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


The problem is in the passage of the array parameters. I pass them ByRef
because the entire Assembler procedure needs to iterate through their
elements, but with debugger I noticed that the values I read are not
correct.
Is there an issue with the VB.NET array representation in memory?
Or it is an issue of copying values to the stack?

Alessio


From: Mike Williams on
On 29 Jan, 17:30, "Alessio Brizi" <alessio.br...(a)gmail.com> wrote:

> I have a 32-bit software that functioned well, but
> after upgrading my hardware, I wanted to transform
> this software in his 64-bit version. It all works
> except for the parameters passing to an Assembler
> dll that I wrote. The problem is in the passage of
> the array parameters. Is there an issue with the
> VB.NET array representation in memory?

This is a Classic VB newsgroup (VB6 and earlier versions). The product
you are using is a very different product. There are a few odd
exceptions, but in general VB6 code does not work in VB.Net and VB.Net
code does not work in VB6. They are as different as chalk and cheese.
Unfortunately, in order to deliberately confuse the punters and to
maximize profits, Micro$oft sprinkled their new and otherwise
completely different product with some Basic sounding constructs and
gave it a Basic sounding name, so it is not surprising that you have
been taken in by their subterfuge and have posted to the wrong group.
Micro$oft would never openly acknowledge this of course, but they have
tacitly admitted to it by creating a new and completely different
newsgroup on their own public servers for their new and completely
different product. To summarise, this comp.lang.basic.visual.misc
newsgroup is for VB6 and earlier versions. If you have questions about
the imposter then you should post them to the imposter's own newsgroup
at:

microsoft.public.dotnet.languages.vb

Mike


From: Alessio Brizi on
Ok, thank you and sorry fotr the mistake

Alessio

"Mike Williams" <gagamomo(a)yahoo.co.uk> wrote in message
news:bf1d7366-6594-485e-b9ae-33e58b07927d(a)k5g2000yqf.googlegroups.com...
> On 29 Jan, 17:30, "Alessio Brizi" <alessio.br...(a)gmail.com> wrote:
>
>> I have a 32-bit software that functioned well, but
>> after upgrading my hardware, I wanted to transform
>> this software in his 64-bit version. It all works
>> except for the parameters passing to an Assembler
>> dll that I wrote. The problem is in the passage of
>> the array parameters. Is there an issue with the
>> VB.NET array representation in memory?
>
> This is a Classic VB newsgroup (VB6 and earlier versions). The product
> you are using is a very different product. There are a few odd
> exceptions, but in general VB6 code does not work in VB.Net and VB.Net
> code does not work in VB6. They are as different as chalk and cheese.
> Unfortunately, in order to deliberately confuse the punters and to
> maximize profits, Micro$oft sprinkled their new and otherwise
> completely different product with some Basic sounding constructs and
> gave it a Basic sounding name, so it is not surprising that you have
> been taken in by their subterfuge and have posted to the wrong group.
> Micro$oft would never openly acknowledge this of course, but they have
> tacitly admitted to it by creating a new and completely different
> newsgroup on their own public servers for their new and completely
> different product. To summarise, this comp.lang.basic.visual.misc
> newsgroup is for VB6 and earlier versions. If you have questions about
> the imposter then you should post them to the imposter's own newsgroup
> at:
>
> microsoft.public.dotnet.languages.vb
>
> Mike
>
>