News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

vmovdqu issue

Started by Biterider, February 26, 2020, 03:39:20 AM

Previous topic - Next topic

Biterider

Hi
I'm having some problems with the vmovdqu instruction. It seems that the memory argument is not being encoded correctly or I'm doing something wrong.
The test code is very simple:

.data
MyYmm YMMWORD 123456789012345678901234567890

.code
start proc
  vmovdqu ymm0, MyYmm
  ret
start endp


The debug output looks like:
00007FF615751000 C5 FE 6F 85 F8 1F 00 00 vmovdqu     ymm0,ymmword ptr [rbp+1FF8h] 
00007FF615751008 C3                   ret 


triggering a GPF.

Regards, Biterider

jj2007

Same with 32-bit code. Where does the [?bp... creep in?

ML 14.0 assembles it as follows (but complains about bad data initialiser etc):
0040658A                ³.  C5FE:6F05 00704000      vmovdqu ymm0, [407000]

Biterider

Hi
Playing a bit with this instruction, I've noticed that writing the ymm register back to memory is encoded correctly.


Biterider

habran

Hi Biterider,
good find, this is definitely a bug :thumbsup:
It works fine with a new codegen.c and it will be easy fixed in next release:
000000013FF35A3C C5 FE 6F 05 7F 5C 00 00 vmovdqu     ymm0,ymmword ptr [MyYmm (013FF3B6C3h)
Thanks :biggrin:
Cod-Father

Biterider

Hi habran
Thank you for addressing this issue. Do you have an idea when do you will get a fix?
In the meantime, I'm going to replace vmovdqu with vlddqu, which does a similar job.

Biterider

habran

Hi Biterider,
I don't know if John is available to upload the fix so I attached InstrTablev2.h for you
replace the one in H folder with this one and build uasm source
that will fix the problem.
Cod-Father

Biterider


johnsa

This fix is now also on 2.50 branch on Git.

Biterider