Itanium ABI
- C++ kursu
- Uzman
- Ders 21/47
- 5 dk
Itanium ABI ve yaygın kullanımını öğrenirsin.
Itanium ABI
Itanium C++ ABI, GCC ve Clang'ın ortak kullandığı mangling ve yerleşim standardıdır. İlk olarak Itanium mimarisi için tasarlandı ama Linux ve macOS'ta tüm mimariler için varsayılan ABI oldu.
Itanium mangling ilkeleri belgelenmiştir; bu sayede farklı derleyiciler aynı sembol adlarını üretir. Örnek: void foo() → _Z3foov. MSVC kendi ABI'sini kullanır; bu yüzden GCC ile derlenmiş bir kütüphane MSVC programına doğrudan bağlanamaz. C bağlantısı (extern "C") ortak köprüdür.
Tür kodları
Itanium ABI tür kodları tek harflıdır: v = void, i = int, d = double, b = bool, c = char, l = long. Adlar uzunluk önekiyle yazılır: 5print = print.
Böylece void print(int) imzası _Z5printi olur: _Z önek, 5print ad, i int parametre. İmza değişmedikçe sembol aynı kalır; bu da ABI kararlılığının temelidir.
Uygulama Ad alanlı fonksiyon yaz
namespace ns { int compute(int x) { return x * 2; } } yaz. main içinde std::cout << ns::compute(5); yaz.
Başlangıç kodu
#include <iostream>
// ns ad alanında compute fonksiyonunu buraya tanımla
int main() {
// compute'u çağır ve yazdır
return 0;
}Örnek çözüm
#include <iostream>
namespace ns {
int compute(int x) {
return x * 2;
}
}
int main() {
std::cout << ns::compute(5);
return 0;
}Beklenen çıktı
10
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sembolü imzaya eşle
| Kavram | Anlamı |
|---|---|
_Z3foov |
foo() sembolü |
_Z3addii |
add(int, int) sembolü |
_ZN2ns3barEv |
ns::bar() sembolü |
_Z3bazv |
baz() sembolü |
2 Mangled adı tamamla
_Z3foo____ // void foo()
_Z3foov // void foo()
Açıklama: v tür kodu void anlamına gelir.
3 Itanium ABI'da 'i' tür kodu neyi belirtir?
_Z3addii // add(int, int)- int Doğru cevap
- double
- bool
- void
Açıklama: Itanium'da i = int, d = double, v = void, b = bool.