Share via


MASM untuk x64 (ml64.exe)

Visual Studio menyertakan MASM versi 32-bit dan 64-bit yang dihosting (Microsoft Macro Assembler) untuk menargetkan kode x64. Bernama ml64.exe, perakitanlah yang menerima bahasa perakitan x64. Alat baris perintah MASM diinstal saat Anda memilih beban kerja C++ selama penginstalan Visual Studio. Alat MASM tidak tersedia sebagai unduhan terpisah. Untuk petunjuk tentang cara mengunduh dan menginstal salinan Visual Studio, lihat Menginstal Visual Studio. Jika Anda hanya menginginkan alat baris perintah, bukan IDE lengkap, unduh Build Tools for Visual Studio.

Untuk menggunakan ml64.exe pada baris perintah, mulai perintah pengembang untuk target x64. Prompt perintah pengembang mengatur jalur yang diperlukan dan variabel lingkungan lainnya. Untuk informasi tentang cara memulai prompt perintah pengembang, lihat Membangun kode C/C++ pada baris perintah.

Untuk informasi tentang opsi baris perintah ml64.exe, lihat Referensi Baris Perintah ML dan ML64.

Perakitan sebaris atau penggunaan ASM kata kunci tidak didukung untuk target x64 atau ARM64. Untuk mem-port kode x86 Anda yang menggunakan perakit sebaris ke x64 atau ARM64, Anda dapat mengonversi kode Anda ke C++, menggunakan intrinsik pengkompilasi, atau membuat file sumber bahasa perakit. Pengompilasi Microsoft C++ mendukung intrinsik untuk memungkinkan Anda menggunakan instruksi fungsi khusus, misalnya, hak istimewa, pemindaian bit atau pengujian, saling mengunci, dan sebagainya, sedekat mungkin dengan cara lintas platform. Untuk informasi tentang intrinsik yang tersedia, lihat Intrinsik Pengkompilasi.

Menambahkan file bahasa perakit ke proyek Visual Studio C++

Sistem proyek Visual Studio mendukung file bahasa perakitan yang dibuat dengan menggunakan MASM di proyek C++Anda. MASM sepenuhnya mendukung file sumber bahasa perakitan x64, dan membangunnya menjadi file objek. Anda kemudian dapat menautkan file objek ini ke kode C++ yang dibuat untuk target x64. Ini adalah salah satu cara untuk mengatasi kurangnya perakitan sebaris x64.

Untuk menambahkan file bahasa perakit ke proyek Visual Studio C++ yang sudah ada

  1. Pilih proyek di Penjelajah Solusi. Pada bilah menu, pilih Project, Build Customizations.

  2. Dalam kotak dialog Visual C++ Build Customization Files , centang kotak di samping masm(.targets,.props). Pilih OK untuk menyimpan pilihan Anda dan menutup kotak dialog.

  3. Pada bilah menu, pilih Proyek, Tambahkan Item Baru.

  4. Dalam kotak dialog Tambahkan Item Baru, pilih file C++ (.cpp) di panel tengah. Di kontrol Edit nama, masukkan nama file baru yang memiliki .asm ekstensi alih-alih .cpp. Pilih Tambahkan untuk menambahkan file ke proyek Anda dan menutup kotak dialog.

Buat kode bahasa perakitan Anda dalam file yang .asm Anda tambahkan. Saat Anda membangun solusi, perakit MASM dipanggil untuk merakit .asm file ke dalam file objek yang kemudian ditautkan ke dalam proyek Anda. Untuk mempermudah akses simbol, deklarasikan fungsi perakit Anda seperti extern "C" dalam kode sumber C++Anda, daripada menggunakan konvensi dekorasi nama C++ dalam file sumber bahasa perakitan Anda.

Direktif Khusus ml64

Anda dapat menggunakan direktif khusus ml64 berikut dalam kode sumber bahasa perakitan Anda yang menargetkan x64:

Arahan PROC juga telah diperbarui untuk digunakan dengan ml64.exe.

Mode Alamat 32-Bit (Penimpaan Ukuran Alamat)

MASM memancarkan penimpaan ukuran alamat 0x67 jika operand memori menyertakan register 32-bit. Misalnya, contoh berikut menyebabkan penimpaan ukuran alamat dipancarkan:

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 mengasumsikan alamat 64-bit jika perpindahan 32-bit muncul sendirian sebagai operand memori. Saat ini tidak ada dukungan untuk alamat 32-bit dengan operan tersebut.

Akhirnya, mencampur ukuran register dalam operand memori, seperti yang ditunjukkan dalam kode berikut, menghasilkan kesalahan.

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

Baca juga

Referensi Perakitan Makro Microsoft