Peringatan Kompilator (Tingkat 1) C4730
'main' : mencampur _m64 dan ekspresi floating point dapat mengakibatkan kode yang salah
Fungsi menggunakan __m64 dan float
/double
jenis. Karena MMX dan floating-point register berbagi ruang register fisik yang sama (tidak dapat digunakan secara bersamaan), menggunakan __m64
dan float
/double
jenis dalam fungsi yang sama dapat mengakibatkan kerusakan data, mungkin menyebabkan pengecualian.
Untuk menggunakan __m64
jenis dan jenis floating-point dengan aman dalam fungsi yang sama, setiap instruksi yang menggunakan salah satu jenis harus dipisahkan oleh intrinsik _m_empty() (untuk MMX) atau _m_femms() (untuk 3DNow!).
Sampel berikut menghasilkan C4730:
// C4730.cpp
// compile with: /W1
// processor: x86
#include "mmintrin.h"
void func(double)
{
}
int main(__m64 a, __m64 b)
{
__m64 m;
double f;
f = 1.0;
m = _m_paddb(a, b);
// uncomment the next line to resolve C4730
// _m_empty();
func(f * 3.0); // C4730
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk