3 ms·
> Because the Application Binary Interface (ABI) of ARM and x86-64 is different How does Rosettafied x86 code call system code then?
by lisper 4y ago
> Because the Application Binary Interface (ABI) of ARM and x86-64 is different
How does Rosettafied x86 code call system code then?
- EdSchouten 4y agoSystem calls tend to have a _very_ basic calling convention. Typically up to six arguments, of which all of them are integers or pointers. No floating-point values. It's fairly easy to translate such calls. Even if translation is non-trivial, there are only a finite number of system calls (hundreds). It's not hard to provide bindings for those.
- lisper 4y agoYeah, I didn't phrase my question very well. I didn't mean "system calls" as in kernel calls. I meant system libraries, i.e. Cocoa frameworks. Quartz. Homekit. That sort of thing.
- EdSchouten 4y agoI think all of those are simply built as universal libraries as well, right?
- lisper 4y agoI have no idea. That's what I'm asking. But I don't think that's the case because Rosetta is a separate download. If it included universal binaries for all the system libraries it would be huge.