پایگاه کد GCC که برای ساخت شاخه GCC 15 استفاده میشود، به گونهای اصلاح شده است که پشتیبانی از ARM64 ILP32 ABI (-mabi=ilp32) منسوخ شده است. ILP3 شبیه معماری فرعی x32 برای سیستم های x86_64 است و همچنین امکان استفاده از اشاره گرهای 32 بیتی و مدل آدرس دهی حافظه 32 بیتی را فراهم می کند، در حالی که پردازنده را در حالت 64 بیتی با پشتیبانی از ثبات های 64 بیتی و دستورالعمل های توسعه یافته اجرا می کند. محدودیت ILP32 ABI این است که نمی تواند بیش از 4 گیگابایت حافظه را از یک برنامه آدرس دهی کند.
رابط برنامهنویسی کاربردی ILP32 در ابتدا برای سادهسازی انتقال برنامههای ۳۲ بیتی به پردازندههای ۶۴ بیتی AArch64 طراحی شده بود، اما هرگز به طور گسترده مورد استفاده قرار نگرفت. پشتیبانی از ILP32 هرگز در هسته پذیرفته نشد. Linux و کتابخانه سیستم Glibc. پورتهای Linaro به طور جداگانه توسعه داده شدند و Debian برای ILP32، اما بیش از پنج سال است که کنار گذاشته شدهاند. از جمله سیستمهای نادری که از ILP32 پشتیبانی میکنند، watchOS، سیستم عاملی است که در دستگاههای اپل واچ استفاده میشود، اما GCC برای این سیستم عامل پشتیبانی نمیشود.
منبع: opennet.ru
