Why does x86-64 use IA-64 C++ ABI?
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
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.
add a comment |
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
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.
add a comment |
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
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
c++ x86-64 calling-convention abi design-decisions
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.
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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.
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
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
add a comment |
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.
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
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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