Chamar a função C / C ++ da montagem (OSX Mavericks x64)
Esta é uma questão estranha para a qual não consigo encontrar uma resposta. Este:
#include <iostream>
using namespace std;
void show_number(int number) {
cout << number << endl; // Shows '10' as expected
}
int main() {
cout << endl; // Remove this and it fails
__asm {
mov rdi, 10
call show_number
}
}
realmente funciona bem, exceto quando você remove a inicialcout << endl
(primeira linha demain
) Quando você o remove, ocout
noshow_number
parece causar um segfault por algum motivo.
O que causa isso?
(OSX Mavericks x64, mas também deve funcionar em Linux)