x64 (ml64.exe) için (MASM)

Visual Studio, x64 kodunu hedeflemek için MASM'nin (Microsoft Makro Derleyicisi) hem 32 bit hem de 64 bit barındırılan sürümlerini içerir. ml64.exe adlı derleme, x64 assembler dilini kabul eden derleyicidir. Visual Studio yüklemesi sırasında bir C++ iş yükü seçtiğinizde MASM komut satırı araçları yüklenir. MASM araçları ayrı bir indirme olarak kullanılamaz. Visual Studio'nun bir kopyasını indirme ve yükleme yönergeleri için bkz . Visual Studio'yu yükleme. IDE'nin tamamını değil yalnızca komut satırı araçlarını istiyorsanız Visual Studio için Derleme Araçları'nı indirin.

Komut satırında ml64.exe dosyasını kullanmak için x64 hedefleri için bir geliştirici komut istemi başlatın. Geliştirici komut istemi gerekli yolu ve diğer ortam değişkenlerini ayarlar. Geliştirici komut istemi başlatma hakkında bilgi için, komut satırında C/C++ kodu derleme bölümüne bakın.

ml64.exe komut satırı seçenekleri hakkında bilgi için bkz . ML ve ML64 Komut Satırı Başvurusu.

Satır içi assembler veya anahtar sözcüğün ASM kullanımı x64 veya ARM64 hedefleri için desteklenmez. Satır içi derleyici kullanan x86 kodunuzu x64 veya ARM64'e getirmek için kodunuzu C++'a dönüştürebilir, derleyici iç bilgilerini kullanabilir veya derleyici dili kaynak dosyaları oluşturabilirsiniz. Microsoft C++ derleyicisi, ayrıcalıklı, bit tarama veya test etme, birbirine kilitleme gibi özel işlev yönergelerini mümkün olduğunca platformlar arası bir şekilde kullanmanıza olanak sağlamak için iç bilgileri destekler. Kullanılabilir iç bilgiler hakkında bilgi için bkz . Derleyici İç Bilgileri.

Visual Studio C++ projesine derleyici dili dosyası ekleme

Visual Studio proje sistemi, C++ projelerinizde MASM kullanılarak oluşturulan derleyici dil dosyalarını destekler. MASM, x64 assembler-language kaynak dosyalarını tam olarak destekler ve bunları nesne dosyaları halinde oluşturur. Daha sonra bu nesne dosyalarını x64 hedefleri için oluşturulan C++ kodunuzla ilişkilendirebilirsiniz. Bu, x64 satır içi assembler eksikliğini aşmanın bir yoludur.

Var olan bir Visual Studio C++ projesine derleyici dili dosyası eklemek için

  1. Çözüm Gezgini'da projeyi seçin. Menü çubuğunda Proje, Derleme Özelleştirmeleri'ni seçin.

  2. Visual C++ Derleme Özelleştirme Dosyaları iletişim kutusunda masm(.targets,.props) öğesinin yanındaki onay kutusunu işaretleyin. Seçiminizi kaydetmek ve iletişim kutusunu kapatmak için Tamam'ı seçin.

  3. Menü çubuğunda Proje, Yeni Öğe Ekle'yi seçin.

  4. Yeni Öğe Ekle iletişim kutusunda orta bölmede C++ dosyası (.cpp) öğesini seçin. Ad düzenleme denetimine yerine uzantısı .cppolan yeni bir .asm dosya adı girin. Dosyayı projenize eklemek için Ekle'yi seçin ve iletişim kutusunu kapatın.

Eklediğiniz dosyada .asm assembler dil kodunuzu oluşturun. Çözümünüzü oluşturduğunuzda, MASM derleyicisi çağrılarak .asm dosyayı projenize bağlı bir nesne dosyasına derler. Sembol erişimini kolaylaştırmak için assembler dil kaynak dosyalarınızda C++ ad düzenleme kurallarını kullanmak yerine derleyici işlevlerinizi C++ kaynak kodunda olduğu gibi extern "C" bildirin.

ml64'e Özgü Yönergeler

Derleyici dili kaynak kodunuzda x64'i hedefleyen aşağıdaki ml64'e özgü yönergeleri kullanabilirsiniz:

Yönerge ayrıca PROC ml64.exe ile kullanılmak üzere güncelleştirilmiştir.

32 Bit Adres Modu (Adres Boyutunu Geçersiz Kılma)

Bir bellek işleneni 32 bit yazmaçlar içeriyorsa MASM, 0x67 adres boyutunu geçersiz kılar. Örneğin, aşağıdaki örnekler adres boyutu geçersiz kılmanın yayılma neden olur:

mov rax, QWORD PTR [ecx]
mov eax, DWORD PTR [ecx*2+r10d]
mov eax, DWORD PTR [ecx*2+r10d+0100h]
prefetch [eax]
movnti rax, QWORD PTR [r8d]

MASM, 32 bit yer değiştirme yalnızca bellek işleneni olarak görünüyorsa 64 bit adreslediğini varsayar. Şu anda bu tür işlenenlerle 32 bit adresleme desteği yoktur.

Son olarak, aşağıdaki kodda gösterildiği gibi bir bellek işleneni içinde yazmaç boyutlarının karıştırılması bir hata oluşturur.

mov eax, DWORD PTR [rcx*2+r10d]
mov eax, DWORD PTR [ecx*2+r10+0100h]

Ayrıca bkz.

Microsoft Macro Assembler Başvurusu