Так что я пытаюсь связать простой скрипт сборки с C++ и до сих пор не повезло.Сегментация Неисправность при связывании 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
Как исправить эту проблему? Заранее спасибо.
К сожалению, это не совсем устранило проблему (спасибо за советы), может ли это быть проблемой на стороне C++? Большое спасибо за Вашу помощь. – Pnelego
@Pnelego см. Обновление. – Jester
Это исправило все, спасибо за вашу помощь. (Я не могу поверить, что я этого не видел). – Pnelego