Watch, Follow, &
Connect with Us
Public Report
Report From: Delphi-BCB/Debugger/CPU    [ Add a report in this area ]  
Report #:  117435   Status: Open
[x64] Win64 defect in disassembler
Project:  Delphi Build #:  18.0.4905.60485
Version:    18.1 Submitted By:   Denis Volodarsky
Report Type:  Basic functionality failure Date Reported:  7/27/2013 7:20:31 AM
Severity:    Serious / Highly visible problem Last Updated: 7/27/2013 4:52:15 PM
Platform:    All versions Internal Tracking #:   41400
Resolution: None (Resolution Comments) Resolved in Build: : None
Duplicate of:  None
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: 10
Description
[x64] Win64 defect in disassembler

It's only for win 64 mode.

Win64 disassembles low-part registers wrong (instruction includes modrm and rex prefix)

When rex prefix present it should be: spl, bpl, sil, dil
Otherwise: ah, ch, dh, bh
Now it's always: ah, ch, dh, bh

for example:
"mov sil, dil" is disassembled  as "mov dh, bh"

it's only disasm problem; the instruction is assembled correctly
Steps to Reproduce:
1. add following procedure into Win64 project
-----------
procedure test;
asm
  mov rdi, $1122334455667788
  mov sil, dil                                                     // db $40, $88, $fe
end;
-----------

2. start debugging and check this function in disassembly window

3. 2nd line: mov sil, dil will be disassembled as
-----------
mov dh, bh
-----------

Anyway code assembled correctly, and sil will be $88 as expected
Workarounds
None
Attachment
None
Comments

None

Server Response from: ETNACODE01