FpDebug: fix disassembler "xadd 16bit reg" Issue #40520 patch by Red_prig (Pavel)

(cherry picked from commit 4cd413a986)
This commit is contained in:
Martin 2023-09-26 09:03:35 +02:00
parent cf746e3f0e
commit 96aada253b
2 changed files with 10 additions and 2 deletions

View File

@ -3474,8 +3474,10 @@ begin
end;
$C1: begin
DecodeSIMD([soNone]);
if SimdOpcode = soNone
then begin SetOpcode(OPxadd); AddEv; AddGv; CheckLock; end;
case SimdOpcode of
soNone: begin SetOpcode(OPxadd); AddEv; AddGv; CheckLock; end;
so66: begin SetOpcode(OPxadd); AddEw; AddGw; CheckLock; end;
end;
end;
$C2: begin
DecodeSIMD;

View File

@ -233,6 +233,9 @@ begin
TestDis('add [esi*4+edx+$123456],eax', #$67#$01#$84#$b2#$56#$34#$12#$00, 'add [esi*4+edx+$123456],eax');
TestDis('add [esi*4+edx+$123456],rax', #$67#$48#$01#$84#$b2#$56#$34#$12#$00, 'add [esi*4+edx+$123456],rax');
TestDis('xadd [rdi],ax', #$66#$0f#$c1#$07, 'xadd [rdi],ax');
TestDis('lock xadd [rdi],ax', #$f0#$66#$0f#$c1#$07, 'lock xadd [rdi],ax');
TestDis('mov [$0000001a],al ', #$a2#$1a#$00#$00#$00#$00#$00#$00#$00, 'mov [$0000001a],al');
TestDis('mov [$0000001a],ax ', #$66#$a3#$1a#$00#$00#$00#$00#$00#$00#$00, 'mov [$0000001a],ax');
TestDis('mov [$0000001a],eax', #$a3#$1a#$00#$00#$00#$00#$00#$00#$00, 'mov [$0000001a],eax');
@ -331,6 +334,9 @@ begin
TestDis('add [esi*4+edx+$123456],ax', #$66#$01#$84#$b2#$56#$34#$12#$00, 'add [esi*4+edx+$123456],ax');
TestDis('add [esi*4+edx+$123456],eax', #$01#$84#$b2#$56#$34#$12#$00, 'add [esi*4+edx+$123456],eax');
TestDis('xadd [edi],ax', #$66#$0f#$c1#$07, 'xadd [edi],ax');
TestDis('lock xadd [edi],ax', #$f0#$66#$0f#$c1#$07, 'lock xadd [edi],ax');
TestDis('mov [$0000001a],al ', #$a2#$1a#$00#$00#$00, 'mov [$0000001a],al');
TestDis('mov [$0000001a],ax ', #$66#$a3#$1a#$00#$00#$00, 'mov [$0000001a],ax');
TestDis('mov [$0000001a],eax', #$a3#$1a#$00#$00#$00, 'mov [$0000001a],eax');