Derleyici iç bilgileri
İşlevlerin çoğu kitaplıklarda yer alır, ancak bazı işlevler derleyicide yerleşik olarak bulunur (iç işlevler). Bunlar iç işlevler veya iç işlevler olarak adlandırılır.
Açıklamalar
İşlev bir iç işlevse, bu işlevin kodu genellikle satır içine eklenir ve işlev çağrısının yükünden kaçınılır ve bu işlev için son derece verimli makine yönergelerinin dağıtılmasını sağlar. bir iç genellikle eşdeğer satır içi bütünleştirilmiş koddan daha hızlıdır, çünkü iyileştiricinin kaç iç öğe davranış sergilediğini yerleşik olarak bildiğinden, satır içi derleme kullanıldığında kullanılamayan bazı iyileştirmeler kullanılabilir. Ayrıca, iyileştirici iç öğesini farklı şekilde genişletebilir, arabellekleri farklı hizalayabilir veya çağrının bağlam ve bağımsız değişkenlerine bağlı olarak başka ayarlamalar yapabilir.
Kod diğer derleyicilerle derlendiğinde Visual C++ içinde kullanılabilen iç bilgiler kullanılamayabileceği ve bazı hedef mimariler için kullanılabilir olabilecek bazı iç öğeler tüm mimarilerde kullanılamayabileceği için iç bilgi kullanımı kodun taşınabilirliğini etkiler. Ancak iç öğeler genellikle satır içi bütünleştirilmiş koddan daha taşınabilir. satır içi derlemenin desteklenmediği 64 bit mimarilerde iç öğeler gereklidir.
ve __ReadWriteBarrier
gibi __assume
bazı iç bilgiler, derleyiciye iyileştiricinin davranışını etkileyen bilgiler sağlar.
Bazı iç öğeler yalnızca iç öğeler olarak, bazıları ise hem işlev hem de iç uygulamalarda kullanılabilir. Derleyiciye iç uygulamayı yalnızca belirli işlevleri etkinleştirmek mi yoksa tüm iç işlevleri etkinleştirmek mi istediğinize bağlı olarak iki yoldan biriyle kullanmasını isteyebilirsiniz. İlk yol, intrinsic-function-name-list kullanmaktır#pragma intrinsic(
.)
Pragma, virgülle ayrılmış tek bir iç veya birden çok iç bilgi belirtmek için kullanılabilir. İkincisi, belirli bir platformdaki tüm iç bilgileri kullanılabilir hale getiren /Oi (İç işlevler oluştur) derleyici seçeneğini kullanmaktır. /Oi altında, bir işlev çağrısını iç yerine kullanılmaya zorlamak için iç-işlev-adı-listesi)
kullanın#pragma function(
. Belirli bir iç yordama yönelik belgeler yordamın yalnızca iç olarak kullanılabildiğini belirtiyorsa, /Oi veya #pragma intrinsic
belirtilip belirtilmediğinden bağımsız olarak iç uygulama kullanılır. Her durumda, /Oi veya #pragma intrinsic
izin verir, ancak zorlamaz, iyileştirici iç kullanmak için. İyileştirici yine de işlevi çağırabilir.
Bazı standart C/C++ kitaplık işlevleri, bazı mimarilerdeki iç uygulamalarda kullanılabilir. Bir CRT işlevi çağrılırken, komut satırında /Oi belirtilirse iç uygulama kullanılır.
Yaygın iç işlevler için prototipler bildiren bir üst bilgi dosyası <(intrin.h>) kullanılabilir. Üreticiye özgü iç bilgiler immintrin.h> ve <ammintrin.h> üst bilgi dosyalarında <bulunur. Ayrıca, bazı Windows üst bilgileri bir derleyici iç ile eşlenen işlevleri bildirir.
Aşağıdaki bölümlerde çeşitli mimarilerde kullanılabilen tüm iç öğeler listelenmektedir. İç bilgilerin belirli bir hedef işlemci üzerinde nasıl çalıştığı hakkında daha fazla bilgi için üreticinin başvuru belgelerine bakın.
Ayrıca bkz.
ARM assembler başvurusu
Microsoft Makro Derleyicisi başvurusu
Anahtar Sözcükler
C çalışma zamanı kitaplığı başvurusu