如何在C ++中嵌入汇编代码?

时间:2018-07-05 11:08:39

标签: c++ assembly

我正试图通过将程序集嵌入C ++来获取cpu信息。

灵感来自微软代码

enter image description here

但是我想这里的代码应该有所不同,因为我正在使用macOS进行编译

CXXFLAGS = -g -Wall
LDLIBS   = -msse2
OBJS     = main.o  
PROGRAM  = main
$(PROGRAM): $(OBJS)
  $(CXX) $^ $(LDLIBS) -o $@

我的代码正确是

#include <iostream>
#include <string>
#include <array>
#include <memory>
#include <x86intrin.h>
using namespace std;
string get_cpu_name() {
  uint32_t data[4] = { 0 };
  asm 
  (  
    "cpuid\n"
    "mov data[0], ebx"
  );
  return string((const char*)data);
}
int main() {
  cout << "hi" << endl; 
}

错误

c++ -g -Wall   -c -o main.o main.cpp
main.cpp:15:6: error: unexpected token in argument list
    "mov data[0], ebx"
     ^
<inline asm>:2:9: note: instantiated into assembly here
mov data[0], ebx
        ^
1 error generated.
make: *** [main.o] Error 1

所以问题在于如何在C ++中嵌入汇编代码以获取cpu信息?

0 个答案:

没有答案