Tôi đã nhìn thấy các bài về lỗi tương tự nhưng tôi vẫn nhận được lỗi:asm trong C "quá nhiều tài liệu tham khảo bộ nhớ cho` mov "
too many memory references for `mov'
junk `hCPUIDmov buffer' after expression
... đây là đoạn code (mingw trình biên dịch/C :: B):
#include iostream
using namespace std;
union aregister
{
int theint;
unsigned bits[32];
};
union tonibbles
{
int integer;
short parts[2];
};
void GetSerial()
{
int part1,part2,part3;
aregister issupported;
int buffer;
__asm(
"mov %eax, 01h"
"CPUID"
"mov buffer, edx"
);//do the cpuid, move the edx (feature set register) to "buffer"
issupported.theint = buffer;
if(issupported.bits[18])//it is supported
{
__asm(
"mov part1, eax"
"mov %eax, 03h"
"CPUID"
);//move the first part into "part1" and call cpuid with the next subfunction to get
//the next 64 bits
__asm(
"mov part2, edx"
"mov part3, ecx"
);//now we have all the 96 bits of the serial number
tonibbles serial[3];//to split it up into two nibbles
serial[0].integer = part1;//first part
serial[1].integer = part2;//second
serial[2].integer = part3;//third
}
}
nên không được sử dụng '% 'cho tất cả các đăng ký của bạn truy cập? –
Tôi nghĩ rằng bạn đã quên một số dấu hiệu% trước khi đăng ký tên. – fuz
3 dòng ở cuối câu hỏi cho tôi biết rằng bài đăng của tôi chủ yếu là mã? –