Arm64X PE dosyaları

Arm64X, hem klasik Arm64 kodunu hem de Arm64EC kodunu birlikte içerebilen yeni bir ikili türüdür. Bu çift uyumluluk Arm64X'i Arm cihazındaki bir Windows'ta hem klasik Arm64 hem de Arm64EC işlemleri için uygun hale getirir. Her iki ABI'nin de kullandığı ara yazılım veya eklentiler için özellikle uygundur.

Windows 11 SDK'sında tanıtılan Arm64X ikili dosyası, Arm üzerinde Windows 11 ve Arm üzerinde Windows 10 ile çalışan bir Taşınabilir Yürütülebilir Dosya (PE) türüdür. Arm64X ikili dosyaları oluşturmak için bkz. Arm64X ikili dosyalarını oluşturma.

Arm64X ikili dosyaları nasıl çalışır?

Temelde, Arm64X ikili dosyası ayrı x64/Arm64EC ve Arm64 ikili dosyalarında yer alan tüm içeriği içerir, ancak bunları diskte daha verimli bir dosyada birleştirir. Yerleşik Arm64X ikili dosyası iki kod kümesine, giriş noktalarına ve diğer öğelere sahiptir ve diskte yer kazanmak için yedekli parçaları ortadan kaldırır.

Bir uygulama Arm64X ikili dosyasını yüklediğinde, işletim sistemi işlemin mimarisine bağlı olarak doğru bölümleri kullanıma açmak için dönüştürmeler uygular. Arm64X ikiliyi, eski 3D görüntüler gibi düşünebilirsiniz; çift 3D gözlükte kırmızı ve mavi lensler üzerinden görüntülenebilen kırmızı ve mavi bir görüntü gibi. Bir x64 uygulaması DLL'yi bir x64 DLL'i gibi görürken Arm64 uygulaması arm64 DLL ile aynı DLL'yi görür.

Kırmızı ve mavi lensli 3B gözlükleri gösteren Arm64X dönüşüm grafiği

Saydam işletim sistemi dönüştürmeleri hem x64 hem de Arm64 uygulamalarının aynı Arm64X ikili dosyasını diğer mimari için kod içerdiğini bilmeden yüklemesine olanak tanır. Bu nedenle, insanlar Arm64X binerlere çevrelerinin 'rengini' aldıkları için takma ad olarak 'bukalemun' derler.

Arm64X ikilileri varsayılan olarak Arm64 ikilileri olarak görünür. Bu varsayılan ayar Arm'da Windows 10 çalıştıran ve Arm64X biçimini tanımayan veya dönüştürmelerin nasıl uygulanacağını bilmeyen bir sistemin Arm64X ikili dosyasını arm64 işlemine başarıyla yüklemesine olanak tanır.

İşletim sistemi Arm64X ikili dosyalarını nasıl kullanır?

Arm üzerinde Windows 11, Arm64 üzerinde x64 uygulamaları çalıştırma özelliğini kullanıma sunar. Ancak, bir klasör içeren SysWoW64 aksine, saf x64 işletim sistemi ikili dosyalarının ayrı bir klasörü yoktur. Arm üzerinde Windows 11 ile hem x64 uygulamaları hem de Arm64 uygulamaları, System32 içindeki ikili dosyaları yükleyebilir ve bu ikili dosyaları kullanarak API'leri çağırabilir. Bu esneklik, geliştiricilerin bir uygulamanın ihtiyaç duyabileceği tüm ikili dosyaları Arm64X ikili dosyaları olarak System32 yeniden derlemelerinden kaynaklanmaktadır.

Hem x64 hem de Arm64 uygulamaları, tüm sistem ikili dosyalarının x86 gibi ayrı bir kopyasına ihtiyaç duymadan System32 içindeki ikili dosyaları yükleyebilir ve bunlarla etkileşimde bulunabilir.

System32 klasörlerinde x64 ve Arm64 uyumlu çalıştırılabilir dosyalar

Ara yazılım veya eklentilerle kullanım için Arm64X

Arm64X ikilisinin temel işlevi, hem x64/Arm64EC hem de Arm64 işlemlerini desteklemek için diskte bir dosya etkinleştirmektir. Çoğu uygulama geliştiricisi, uygulamalarını her ikisi de değil Arm64EC veya Arm64 olarak oluşturmaya odaklanır, bu nedenle arm64X'e ihtiyacınız yoktur.

Ancak ara yazılım veya eklenti geliştiricileri Arm64X'i dikkate almalıdır çünkü bu tür kodlar x64 veya Arm64 işlemlerine yüklenebilir.

Arm64X kullanmadan hem x64 hem de Arm64 işlemlerini destekleyebilirsiniz, ancak işletim sisteminin belirli bir 64 bit işlemeye doğru ikili mimariyi yüklemeyi işlemesine izin vermek daha kolay olabilir.

Uygulamaları desteklemek için üç yaklaşım: ayrı ikili dosyalar, Arm64X ikili dosyası ve x64/Arm64EC ile Arm64 ikililerini birleştiren Arm64X saf yönlendirici

Arm üzerinde Windows 11'de her iki mimariyi de desteklemenin üç kavramsal yolu şunlardır:

  • Ayrı ikili dosyalar: Standart uygulamalar günümüzde birden çok mimariyi desteklerken ayrı ikili dosyalar kullandığından, ayrı x64 ve Arm64 ikili dosyalarını derlemenin ve göndermenin çözümünüz için daha iyi çalıştığını fark edebilirsiniz. İlişkili mimari işlemine doğru ikili yüklerin yüklendiğinden emin olmak için mevcut mekanizmalarınızı kullanabilirsiniz.

  • Arm64X ikili: Tek bir ikili dosyada x64/Arm64EC ve Arm64 kodunun tümünü içeren bir Arm64X ikili dosyası oluşturabilirsiniz.

  • Arm64X saf iletici: Arm64X esnekliğine ihtiyacınız varsa ancak tüm uygulama kodunuzu bir Arm64X ikilisine koymaktan kaçınmak istiyorsanız, saf iletici yaklaşımını kullanabilirsiniz. Kod içermeyen küçük bir Arm64X ikili dosyası, yükleyiciyi doğru DLL mimarisine yönlendirir.

Arm64X gerektiren örnek durumlar

Bazı durumlarda hem x64 hem de Arm64 uygulamalarını desteklemek için Arm64X ikili dosyası kullanılması gerekir. Bu durumlar şunlardır:

  • Hem x64 hem de Arm64 uygulamalarının çağıran 64 bit COM sunucusu
  • x64 veya Arm64 uygulamasına yüklenen eklenti
  • x64 veya Arm64 işlemine enjekte edilen tek bir binary

Bu durumların her birinde, Arm64X ikili veya Arm64X saf iletici kullanarak tek bir ikili dosyanın her iki mimariyi de desteklemesini sağlayabilirsiniz.

Arm64X ikili dosyalarını oluşturma hakkında ayrıntılı bilgi için bkz. Arm64X ikili dosyalarını derleme.