Why does x86-64 use IA-64 C++ ABI?












3















From the x86-64 psABI:




9.1 C++



For the C++ ABI we will use the IA-64 C++ ABI and instantiate it appropriately.
The current draft of that ABI is available at:



http://mentorembedded.github.io/cxx-abi/




Why not design its own ABI?










share|improve this question















migrated from unix.stackexchange.com Nov 24 '18 at 6:47


This question came from our site for users of Linux, FreeBSD and other Un*x-like operating systems.























    3















    From the x86-64 psABI:




    9.1 C++



    For the C++ ABI we will use the IA-64 C++ ABI and instantiate it appropriately.
    The current draft of that ABI is available at:



    http://mentorembedded.github.io/cxx-abi/




    Why not design its own ABI?










    share|improve this question















    migrated from unix.stackexchange.com Nov 24 '18 at 6:47


    This question came from our site for users of Linux, FreeBSD and other Un*x-like operating systems.





















      3












      3








      3








      From the x86-64 psABI:




      9.1 C++



      For the C++ ABI we will use the IA-64 C++ ABI and instantiate it appropriately.
      The current draft of that ABI is available at:



      http://mentorembedded.github.io/cxx-abi/




      Why not design its own ABI?










      share|improve this question
















      From the x86-64 psABI:




      9.1 C++



      For the C++ ABI we will use the IA-64 C++ ABI and instantiate it appropriately.
      The current draft of that ABI is available at:



      http://mentorembedded.github.io/cxx-abi/




      Why not design its own ABI?







      c++ x86-64 calling-convention abi design-decisions






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 24 '18 at 18:55









      Peter Cordes

      128k18190327




      128k18190327










      asked Nov 23 '18 at 12:47









      陳 力陳 力

      1,7241724




      1,7241724




      migrated from unix.stackexchange.com Nov 24 '18 at 6:47


      This question came from our site for users of Linux, FreeBSD and other Un*x-like operating systems.









      migrated from unix.stackexchange.com Nov 24 '18 at 6:47


      This question came from our site for users of Linux, FreeBSD and other Un*x-like operating systems.


























          1 Answer
          1






          active

          oldest

          votes


















          6














          Because the “Itanium” C++ ABI is designed to be generic, or at least generalisable. Quoting the introduction:




          In general, this document is written as a generic specification, to be usable by C++ implementations on a variety of architectures. However, it does contain processor-specific material for the Itanium 64-bit ABI, identified as such. Where structured data layout is described, we generally assume Itanium psABI member sizes. An implementation for a 32-bit ABI would typically just change the sizes of members as appropriate (i.e. pointers and long ints would become 32 bits), but sometimes an order change would be required for compactness, and we note more substantive changes.




          The phrase “instantiate it appropriately” refers to the adaptations required to adjust the Itanium psABI assumptions for use with the x86-64 psABI.






          share|improve this answer
























          • Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

            – 陳 力
            Nov 23 '18 at 14:36






          • 4





            Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

            – Stephen Kitt
            Nov 23 '18 at 14:42











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53455855%2fwhy-does-x86-64-use-ia-64-c-abi%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          6














          Because the “Itanium” C++ ABI is designed to be generic, or at least generalisable. Quoting the introduction:




          In general, this document is written as a generic specification, to be usable by C++ implementations on a variety of architectures. However, it does contain processor-specific material for the Itanium 64-bit ABI, identified as such. Where structured data layout is described, we generally assume Itanium psABI member sizes. An implementation for a 32-bit ABI would typically just change the sizes of members as appropriate (i.e. pointers and long ints would become 32 bits), but sometimes an order change would be required for compactness, and we note more substantive changes.




          The phrase “instantiate it appropriately” refers to the adaptations required to adjust the Itanium psABI assumptions for use with the x86-64 psABI.






          share|improve this answer
























          • Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

            – 陳 力
            Nov 23 '18 at 14:36






          • 4





            Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

            – Stephen Kitt
            Nov 23 '18 at 14:42
















          6














          Because the “Itanium” C++ ABI is designed to be generic, or at least generalisable. Quoting the introduction:




          In general, this document is written as a generic specification, to be usable by C++ implementations on a variety of architectures. However, it does contain processor-specific material for the Itanium 64-bit ABI, identified as such. Where structured data layout is described, we generally assume Itanium psABI member sizes. An implementation for a 32-bit ABI would typically just change the sizes of members as appropriate (i.e. pointers and long ints would become 32 bits), but sometimes an order change would be required for compactness, and we note more substantive changes.




          The phrase “instantiate it appropriately” refers to the adaptations required to adjust the Itanium psABI assumptions for use with the x86-64 psABI.






          share|improve this answer
























          • Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

            – 陳 力
            Nov 23 '18 at 14:36






          • 4





            Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

            – Stephen Kitt
            Nov 23 '18 at 14:42














          6












          6








          6







          Because the “Itanium” C++ ABI is designed to be generic, or at least generalisable. Quoting the introduction:




          In general, this document is written as a generic specification, to be usable by C++ implementations on a variety of architectures. However, it does contain processor-specific material for the Itanium 64-bit ABI, identified as such. Where structured data layout is described, we generally assume Itanium psABI member sizes. An implementation for a 32-bit ABI would typically just change the sizes of members as appropriate (i.e. pointers and long ints would become 32 bits), but sometimes an order change would be required for compactness, and we note more substantive changes.




          The phrase “instantiate it appropriately” refers to the adaptations required to adjust the Itanium psABI assumptions for use with the x86-64 psABI.






          share|improve this answer













          Because the “Itanium” C++ ABI is designed to be generic, or at least generalisable. Quoting the introduction:




          In general, this document is written as a generic specification, to be usable by C++ implementations on a variety of architectures. However, it does contain processor-specific material for the Itanium 64-bit ABI, identified as such. Where structured data layout is described, we generally assume Itanium psABI member sizes. An implementation for a 32-bit ABI would typically just change the sizes of members as appropriate (i.e. pointers and long ints would become 32 bits), but sometimes an order change would be required for compactness, and we note more substantive changes.




          The phrase “instantiate it appropriately” refers to the adaptations required to adjust the Itanium psABI assumptions for use with the x86-64 psABI.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '18 at 14:27









          Stephen KittStephen Kitt

          1,3591120




          1,3591120













          • Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

            – 陳 力
            Nov 23 '18 at 14:36






          • 4





            Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

            – Stephen Kitt
            Nov 23 '18 at 14:42



















          • Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

            – 陳 力
            Nov 23 '18 at 14:36






          • 4





            Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

            – Stephen Kitt
            Nov 23 '18 at 14:42

















          Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

          – 陳 力
          Nov 23 '18 at 14:36





          Thanks. IIUC, itanium came up much later than x86-64, so, do you know which abi does x86-64 uses before itanium came up?

          – 陳 力
          Nov 23 '18 at 14:36




          4




          4





          Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

          – Stephen Kitt
          Nov 23 '18 at 14:42





          Itanium development started in 1989, x86-64 development started later; hardware was available commercially in similar timeframes (2003 for x86-64, 2001 for Itanium), and the C++ ABI was in progress on Itanium (1999) before work started on the x86-64 (2002 for the psABI AFAICT, without considering C++ yet).

          – Stephen Kitt
          Nov 23 '18 at 14:42




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53455855%2fwhy-does-x86-64-use-ia-64-c-abi%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Create new schema in PostgreSQL using DBeaver

          Deepest pit of an array with Javascript: test on Codility

          Costa Masnaga