2015-11-17 7 views
10

Ho cercato e trovato che non posso usare __asm in x64 in Visual Studio. Invece devo usare un file assembly esterno.file di assembly esterno nello studio di visualizzazione

Come è possibile aggiungere un file di assembly esterno al progetto della console win32?

Come possono essere compilati?

Potete spiegare passo dopo passo.

risposta

24

Come costruire un progetto di 64-mixed-source con un file di assieme x64:

1) Avviare Visual Studio (comunitario) 2015 e scegliere FILE - New - Project.

Screenshot

2) Nella finestra successiva scegliere Win 32 Console Application.

Screenshot

3) Si ottiene una conferma. Fare clic su Next >.

Screenshot

4) Nella finestra successiva è possibile accettare le impostazioni predefinite. Fare clic su Finish.

Screenshot

5) Ora scegliere PROJECT - Build Customizations....

Screenshot

6) Nella finestra successiva tick masm(.targets,.props) e cliccare su OK.

Screenshot

7) Scegliere Build - Configuration Manager...

Screenshot

8) Modificare la Active solution platform per x64

Screenshot

9) Creare callee.asm: PROJECT - Add New Item.

Screenshot

10) Nella finestra successiva scegliere C++File(.cpp) e - IMPORTANTE! - assegna un nome con l'estensione .asm. Fare clic su Add.

Screenshot

10) Ora, controllare se il file .asm ha le giuste proprietà. In Esplora soluzioni, fare clic con il tasto destro del mouse sul file e selezionare Properties.

Screenshot

11) nella pagina delle proprietà si dovrebbe vedere almeno:

Excluded From Build (empty) or No 
Item Type    Microsoft Macro Assembler 

Screenshot

Sotto Command Line assicurarsi che ml64.exe è scelto come l'assemblatore.

Screenshot

Cliccare sulla OK.

12) Ora è possibile riempire i file con il contenuto.

ConsoleApplication1.cpp:

#include <iostream> 
using namespace std; 

extern "C" void hello_from_asm(); 

int main() 
{ 
    cout << "Hello from CPP" << endl; 
    hello_from_asm(); 
    return 0; 
} 

callee.asm:

PUBLIC hello_from_asm 
EXTERN puts:PROC 

.data 

    hello1 db "Hello from ASM.",0 

.code 

hello_from_asm PROC 
    push rbp 
    mov rbp, rsp 
    sub rsp, 32     ; Shadow Space 
    and spl, -16    ; Align stack at 16 

    lea rcx, hello1 
    call puts 

    leave      ; Restore stack (rsp) & frame pointer (rbp) 
    ret 
hello_from_asm ENDP 

END 

13) Costruire il .exe

Screenshot

e eseguilo con CTRL-F5.

L'applicazione si aprirà in una nuova finestra.

Problemi correlati