377
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 15 Oct 2025
377 points (100.0% liked)
Linux Gaming
21710 readers
268 users here now
Discussions and news about gaming on the GNU/Linux family of operating systems (including the Steam Deck). Potentially a $HOME
away from home for disgruntled /r/linux_gaming denizens of the redditarian demesne.
This page can be subscribed to via RSS.
Original /r/linux_gaming pengwing by uoou.
No memes/shitposts/low-effort posts, please.
Resources
WWW:
Discord:
IRC:
Matrix:
Telegram:
founded 2 years ago
MODERATORS
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)