cdimauro
Member
- Sep 14, 2016
- 163
- 14
- 61
You know that I'm not used, and I don't need, to offend people: I'm fine politely talking of technical things. And that's what I did.Ok good night. I know you have not said I am stupid. But highlighting other errors without answering, is not pleasant, you should admit.
I have no time here, because I've to prepare to go to work, and then I go with the my family in vacation for this week-end, but I quickly give you some hints / opportunity to better check what I was talking about before.
1) No kernel mode. I was referring only to the regular user mode. And in Long Mode.
2) Segmentation is still active, but don't produce effects. Which is very different to say that it's disabled. Think ALSO about happens when an SMP core which runs 64 and 32 bit apps, one on each hardware thread; it's NOT an uncommon case, especially on Windows.
3) Even for a simple ADD operation, an x64 ALU has to take in consideration several things: different sizes (from 8 to 64 bit) with different operational modes (masking or clearing upper bits), always updating the flags (with its problem on the pipeline on an OoO uarch), the some flags are a bit dirty to handle (Auxiliary and Parity are still there). Last but not really least, operations like INC, which are very similar to ADD, in reality are different and require ad hoc / specific handling.
4) Even for a simple FADD, an x64 FPU has to take in consideration similar problems: different sizes (64, 128, 256, and the future 512 bit), masking/clearing of upper bits, using different registers set (64 bit = MMX). And of course there's the x87 legacy... with also 80-bit operations.
5) x64 has many many instructions, both on ALU and FPU side.
6) x64 has many different addressing modes, special encodings for them, and special behavior (e.g.: on 32 bit mode there's still DS and SS segment distinction... and you run also 32 bit code).
OK, I've to go now, but think about it.
Nice weekend.