2

Segments are still used on 64 bit long mode and are still set up, except the CPU treats their bases to be 0 (except for gs and fs), and does not perform a limit check. The default segment for rax is indeed ds, but this can be changed with a segment override. lea rdx, ds:0[rax*4] is lea rdx, ds:[rax*4 + 0], which is lea rdx, ds:[rax*4], which is the same as ...


1

Sounds possible, the difficulty of achieving it I think would depend on: how the objects are allocated (inline access vs allocator) the type of references (direct addressing vs indirect) the amount of references that there are to the objects If it's just a small number of references and allocations then it might not matter which method you use - the ...


1

You need to set ds to the actual segment value used by the program. Usually it's one of the segments near the end. I suggest you to check which of the segments has something fitting at 8401h, or try to see how ds is set up in the calling function (you may need to go several levels up). You can also try to map the value you see in DOSBox debugger back to one ...


1

You can press Ctrl+G and check the different settings of the segment registers. You can press Alt+G to edit the segment registers.


Only top voted, non community-wiki answers of a minimum length are eligible