• chocrates@piefed.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      3 days ago

      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.

      • certified_expert@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 days ago

        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 🙏🏼

        • chocrates@piefed.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          9 hours ago

          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

          • certified_expert@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            8 hours ago

            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)