[HN Gopher] System V Application Binary Interface [pdf]
       ___________________________________________________________________
        
       System V Application Binary Interface [pdf]
        
       Author : luu
       Score  : 22 points
       Date   : 2022-02-17 23:28 UTC (1 days ago)
        
 (HTM) web link (ccs.neu.edu)
 (TXT) w3m dump (ccs.neu.edu)
        
       | jcranmer wrote:
       | Note that this isn't the most up-to-date version of the x86-64
       | SysV ABI--if you want that, go to
       | https://gitlab.com/x86-psABIs/x86-64-ABI/-/jobs/artifacts/ma... .
       | 
       | Although I think the only updates since the version linked here
       | are effectively editorial in note. The last big updates are
       | adding AMX registers to the ABI, and the addition of
       | microarchitecture levels, both of which are in this version.
        
       | asguy wrote:
       | This should be required reading for low level engineers, along
       | with the Itanium C++ ABI.
        
         | guerrilla wrote:
         | > Itanium C++ ABI
         | 
         | Are you being sarcastic? Why would that be relevant? Linux uses
         | the System V ABI...
        
           | mhh__ wrote:
           | Maybe you have some reading to do
        
           | fbkr wrote:
           | Have you checked section 9.1 of the System V ABI doc?
        
             | guerrilla wrote:
             | I literally skipped that when I read it. Wow, would not
             | have guessed.
        
           | jcranmer wrote:
           | The Itanium C++ ABI, despite its name, is a cross-
           | architecture ABI for C++ that's basically used by every C++
           | compiler except for MSVC [1], although the details in
           | exception handling do vary a little bit more.
           | 
           | Historically, C++ compilers all did their own thing with C++
           | ABIs. When Intel was pushing Itanium hard, they wanted to
           | avoid incompatibility issues, so they created a standardized
           | ABI for all the C++ vendors on Itanium to agree on. Later,
           | g++ needed to revise its internal ABI for various reasons,
           | and given that it already supported the Itanium ABI for
           | Itanium, they opted to extend the ABI definition to all
           | architectures rather than create their own. Since then, all
           | the major compilers [sans MSVC] have adopted the Itanium ABI
           | for C++ cross-architecture, and it's still maintained today
           | despite Itanium processors themselves no longer receiving
           | that maintenance.
           | 
           | It's really at the point now that if you say "Itanium ABI,"
           | people will assume you're talking about the cross-
           | architecture C++ ABI and not the Itanium-specific processor
           | ABI for any OS.
           | 
           | [1] The MSVC ABI is not officially documented publicly, and
           | given some of the bugs in MSVC found when Clang was
           | attempting to reverse engineer it, I'm dubious that Microsoft
           | itself has any internal documentation either. Note that g++
           | on Windows will use the Itanium C++ ABI instead of the MSVC
           | ABI.
        
             | muricula wrote:
             | Here's an internal ABI doc which escaped Redmond at one
             | point:
             | http://www.openrce.org/articles/files/jangrayhood.pdf I
             | believe there were other ABI docs but the official version
             | of that was what I was given.
        
       ___________________________________________________________________
       (page generated 2022-02-19 23:01 UTC)