FpDebug: fix disassembler vzero... / test reg.l Issue #40546 and #40549 patch by Red_prig (Pavel)

(cherry picked from commit 9cff61c5a0)
This commit is contained in:
Martin 2023-10-13 13:34:54 +02:00
parent 07c3071d31
commit 7824207ffc
2 changed files with 12 additions and 2 deletions

View File

@ -3274,6 +3274,7 @@ begin
then begin
if flagVex in Flags
then begin
Exclude(Flags,flagModRM);
if Vex.VectorLength = os128
then SetOpcode(OPvzeroupper)
else SetOpcode(OPvzeroall);
@ -4351,7 +4352,7 @@ begin
$A9: begin
SetOpcode(OPtest);
AddReg(regGeneral, OperandSize, REG_A);
AddIv;
AddIz;
end;
$AA: begin
SetOpcode(OPstos, OPSx_b); CheckRepeat;

View File

@ -53,7 +53,7 @@ codeBytes, ' ', asmInstr,
r := TRegExpr.Create('(\$)0+([0-9a-fA-F])');
s := LowerCase(asmInstr);
s := Trim(LowerCase(asmInstr));
s := StringReplace(s, ' ', ' ', [rfReplaceAll]); // space
s := StringReplace(s, ', ', ',', [rfReplaceAll]); // space
s := r.Replace(s, '$1$2', True);
@ -259,6 +259,11 @@ begin
TestDis('vmovd [rax],xmm0', #$C4#$E1#$79#$7E#$00, 'vmovd [rax],xmm0');
TestDis('vmovq [rax],xmm0', #$C4#$E1#$F9#$7E#$00, 'vmovq [rax],xmm0');
TestDis('test rax,$FFFFFEFE', #$48#$A9#$FE#$FE#$FF#$FF, 'test rax,$FFFFFEFE');
TestDis('test eax,$FFFFFEFE', #$A9#$FE#$FE#$FF#$FF, 'test eax,$FFFFFEFE');
TestDis('vzeroupper', #$C5#$F8#$77, 'vzeroupper');
TestDis('vzeroall', #$C5#$FC#$77, 'vzeroall');
Process.NewMode := dm32;
@ -373,6 +378,10 @@ begin
TestDis('movd edi,xmm1', #$66#$0F#$7E#$CF, 'movd edi,xmm1');
TestDis('vmovd [eax],xmm0', #$C4#$E1#$79#$7E#$00, 'vmovd [eax],xmm0');
TestDis('test eax,$FFFFFEFE', #$A9#$FE#$FE#$FF#$FF, 'test eax,$FFFFFEFE');
TestDis('vzeroupper', #$C5#$F8#$77, 'vzeroupper');
TestDis('vzeroall', #$C5#$FC#$77, 'vzeroall');
Process.NewMode := dm64;