Yeah the big question is what’s gonna happen to the project after Linus…
you got it pretty much right. An ABI, depending on the context, could include just the app/OS interface or also the across-apps, across-apps-modules interface too. Things like calling convention, register usage, stack usage, etc.
when you distribute compiled libraries, you want clients to know how to invoke your functions and know how to retrieve your returned values. That’s part of the ABI too.
The ABI also defines the type translation from the language (say, C) to asm undertood by a processor (say riscv64g) so, you map types. Following that example, you may instruct the assembler and linker to use abi “lp64” that maps longs and pointers to 64 bits, and integers (int) to 32 bits. This abi also emulates floating point operations (n the other hand, lp64d would make use of dedicated hardware for “double precision” floats)
“common abi”? Like embracing?
Abi means application binary interface. Iirc it is a convention basically on how the operating system expects system calls to be made.
That is a fancy way of saying it’s how programs can use the operating system.
Linux does it one way and windows does it another. It is apart of why we can’t run windows programs on Linux.
Executable format is another big reason, I’m sure there are many.
Oh, thanks… I meant to say that a common ABI sounds like the first stage of embrace, extend and extinguish
I, actually, teach OSs at a university 😁
I truly appreciate, tough, your kindness on teaching to a lemmy fellow 🙏🏼
Oh God I didn’t think of that. I feel like Linus is ornery enough to stop that, but they won’t live forever.
Edit: also what did I get wrong!? I haven’t taken an OS class in years and my only exposure to binary formats has been reverse engineering toy files
Yeah the big question is what’s gonna happen to the project after Linus…
you got it pretty much right. An ABI, depending on the context, could include just the app/OS interface or also the across-apps, across-apps-modules interface too. Things like calling convention, register usage, stack usage, etc.
when you distribute compiled libraries, you want clients to know how to invoke your functions and know how to retrieve your returned values. That’s part of the ABI too.
The ABI also defines the type translation from the language (say, C) to asm undertood by a processor (say riscv64g) so, you map types. Following that example, you may instruct the assembler and linker to use abi “lp64” that maps longs and pointers to 64 bits, and integers (int) to 32 bits. This abi also emulates floating point operations (n the other hand, lp64d would make use of dedicated hardware for “double precision” floats)