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)

questionAnswers(1)

yourAnswerToTheQuestion