【发布时间】:2015-04-22 22:00:34
【问题描述】:
所以我试图用 c++ 链接一个简单的汇编脚本,但到目前为止还没有运气。
汇编脚本
section .data
global getebx
getebx:
mov eax, 0x0
cpuid
mov eax, ebx
ret
c++
#include <iostream>
extern "C" unsigned getebx();
int main (){
std::cout << (const char *)getebx()<< std::endl;
return 0;
}
要构建,我只需运行以下命令。
nasm -f elf32 cpuidtest.asm
g++ -m32 -g main.cc cpuidtest.o
当我运行可执行文件时,我遇到了分段错误(核心转储)错误。所以我的下一个直觉是把它带到gdb。这是它返回的内容:
program received signal SIGSEGV, Segmentation fault.
0xf7da0e86 in ?? () from /lib/i386-linux-gnu/libc.so.6
我该如何解决这个问题?提前谢谢你。
【问题讨论】: