|
|
|
|
|
by avianes
2045 days ago
|
|
It seems to me that the correct term is "Static Binary Translation" (SBT) for what you call "ahead of time binary translation". And the correct term for "JIT-based emulation" is "Dynamic Binary Translation" (DBT). At least these are the terms you should use if you want to find some literature on this subject. We're not talking about JIT or AOT compiler because it's not really a compilation (compilation is translating to a lower level language). I think a lot of people talk about JIT rather than DBT because the JIT term is better known, and there is confusion when Apple says they do "Dynamic translation for JITs".
Which means that: they do DBT to handle applications that use JIT. Edit: So Rossetta 2 does both: SBT and DBT. |
|
Furthermore, SBT, even for user mode binaries, can rarely reach the performance levels that we see with Rosetta2. There are many issues in determining what is code, where are the branch destinations in case of indirect branches, etc. What we have here is certainly a feat of engineering on its own.