Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sintaks
Instruksi ditulis dalam kode sumber sesuai dengan sintaks ini:
awalandaftar operand mnemonic
Untuk informasi tentang definisi instruksi, opsi, dan pengodean, lihat Manual Pemrograman Produsen Prosesor. Beberapa opsi instruksi dan instruksi mungkin tidak didukung oleh Microsoft Macro Assembler.
Awalan
Anda dapat mengawali beberapa instruksi dengan kata kunci yang mengatur opsi tentang bagaimana instruksi dikodekan. Kata REP
kunci , , REPE
REPZ
, REPNE
, dan REPNZ
digunakan dengan instruksi string untuk melakukan memcpy
atau strlen
jenis operasi dalam satu instruksi. Kata LOCK
kunci membuat operasi tertentu pada operand memori atom. Anda dapat menggabungkannya dengan XACQUIRE
kata kunci dan XRELEASE
untuk melakukan Hardware Lock Elision (HLE) pada prosesor yang didukung, yang memungkinkan paralelisme transaksional yang lebih besar dalam kasus tertentu.
Awalan yang tersisa mengontrol bagaimana instruksi AVX dikodekan. Instruksi AVX dikodekan menggunakan VEX
awalan, yang muncul sebelum opcode. Ini mengambil tempat awalan instruksi byte tertentu dan byte prospek opcode. Banyak instruksi AVX juga merupakan instruksi AVX-512, yang dikodekan menggunakan EVEX
awalan yang mendukung lebih banyak opsi. MASM mencoba mengodekan instruksi sekode mungkin, tetapi kata kunci ini memungkinkan kontrol lebih besar atas pengodean mana yang akan digunakan dengan instruksi tertentu. Formulir ini juga digunakan untuk memaksa pembuatan formulir instruksi AVX yang diperkenalkan setelah instruksi AVX-512 yang sesuai. Misalnya, vex vpdpbusd
menentukan bentuk AVX-VNNI dari VPDPBUSD
instruksi daripada formulir AVX512-VNNI. Ketika instruksi AVX muncul tanpa kata kunci awalan eksplisit, pengodean yang dipilih tergantung pada pengaturan pengodean AVX saat ini. Direktif OPTION AVXENCODING
memungkinkan Anda mengubah pengaturan ini.
Opsi VEX2
, , VEX
VEX3
, dan EVEX
tersedia di Visual Studio 2019 versi 16.7 dan yang lebih baru.
Kata kunci | Penggunaan |
---|---|
REP |
Ulangi operasi string dengan hitungan dalam (E)CX. |
REPE REPZ |
Ulangi operasi string saat perbandingan sama, dibatasi oleh hitungan dalam (E)CX. |
REPNE REPNZ |
Ulangi operasi string saat perbandingan tidak sama, dibatasi oleh hitungan dalam (E)CX. |
LOCK |
Lakukan operasi secara atomik pada operand memori. |
XACQUIRE |
Mulai transaksi HLE, paling sering digunakan dengan LOCK awalan. |
XRELEASE |
Selesaikan transaksi HLE, paling sering digunakan dengan LOCK awalan. |
VEX |
Mengodekan instruksi AVX menggunakan VEX awalan. |
VEX2 |
Mengodekan instruksi AVX menggunakan awalan 2 byte VEX . |
VEX3 |
Mengodekan instruksi AVX menggunakan awalan 3 byte VEX . |
EVEX |
Mengodekan instruksi AVX menggunakan awalan EVEX . |
Mnemonic
Mnemonic mengidentifikasi instruksi tertentu, yang menentukan awalan dan pola operand yang diizinkan.
Daftar operand
Sebagian besar instruksi menggunakan daftar operand untuk menentukan operand sumber dan tujuan eksplisit ke instruksi. Daftar operan mungkin berisi referensi memori, register, dan nilai konstanta. Setiap instruksi hanya memungkinkan jenis operand tertentu untuk muncul di setiap posisi dalam daftar operand. Kecuali untuk MOVS
instruksi dan CMPS
, hanya salah satu operand yang mungkin menjadi referensi memori; semua operand lainnya harus mendaftarkan referensi atau konstanta.
Opsi AVX-512
Beberapa instruksi AVX-512 memungkinkan lebih banyak opsi untuk ditentukan. Opsi ini adalah: masking, nol-masking, siaran tertanam, pembulatan tertanam, dan penindasan pengecualian.
Masking memungkinkan operasi diterapkan hanya ke elemen vektor yang dipilih. Opsi ini dikontrol dengan menempatkan register mask dari {k1}
ke {k7}
setelah operand tujuan. Jika register mask diikuti oleh {z}
, semua elemen tujuan yang tidak dipilih diatur ke nol. Alternatif ini dikenal sebagai zero-masking.
Siaran Tertanam memungkinkan nilai skalar dalam memori diterapkan ke semua elemen vektor. Opsi ini diaktifkan dengan menambahkan ukuran elemen dan kata kunci BCST
ke operand memori, yang mirip dengan penggunaan PTR
untuk referensi memori normal.
Pembulatan Tertanam mengontrol mode pembulatan untuk instruksi floating-point individual, tanpa harus mengatur dan mengatur ulang mode pembulatan global. Ini diaktifkan dengan mengikuti instruksi dengan mode pembulatan yang diapit kurung kurawal. Ketika diaktifkan, ini juga menekan semua pengecualian hanya untuk instruksi tersebut. Instruksi floating-point yang tidak dibulatkan juga dapat menekan semua pengecualian menggunakan opsi serupa.
; Examples of AVX-512 options
vaddps xmm1 {k1}, xmm2, xmm3 ; merge-masking
vsubps ymm0 {k4}{z}, ymm1, ymm2 ; zero-masking
vmulps zmm0, zmm1, dword bcst scalar ; embedded broadcast
vdivps zmm0, zmm1, zmm2 {rz-sae} ; embedded rounding
vmaxss xmm1, xmm2, xmm3 {sae} ; suppress all exceptions
Mode pembulatan
Mode | Efek |
---|---|
rn-sae |
Bulat ke terdekat, ikatan ke genap, tekan semua pengecualian. |
rz-sae |
Bulat ke arah nol, tekan semua pengecualian. |
rd-sae |
Bulatkan ke bawah (menuju tak terbatas negatif), tekan semua pengecualian. |
ru-sae |
Bulatkan ke atas (menuju tak terbatas positif), tekan semua pengecualian. |
sae |
Tekan semua pengecualian (tidak diperlukan pembulatan). |
Lihat juga
Referensi Perakitan Makro Microsoft
Panduan Pemrograman Produsen Prosesor