[C/C++] mit Assembler linken?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von gater001, 6. April 2011 .

Schlagworte:
  1. 6. April 2011
    mit Assembler linken?

    Hi RRler,
    will hier etwas ausprobieren bekomme es aber nicht hin. Also ich möchte einmal C code assemblieren und assemblercode (in nasm geschrieben) assemblieren und diese beiden zusammen linken.
    Leider finde ich im Internet nur wenig anleitungen dazu oder ich weiß nicht wonach ich suchen muss ?(

    also so sieht es aktuell aus:
    Code:
    //C-File
    
    #include <stdio.h>
    
    int main()
    {
     print();
     return 0; 
    }
    und hier mein Assembler-Code(mit nasm assembliert)
    Code:
    ; nasm Hello World
    
     SECTION .data
    
    msg: db "Hello World", 10 ,65,66,67,10 ;db= declared initialised data
    msglen: equ $-msg
    
     SECTION .text
    ; global _start
    
    ;_start:
    print:
     mov eax, 4
     mov ebx, 1
     mov ecx, msg
     mov edx, msglen
     int 0x80
    
     mov eax, 1
     mov ebx, 0
     int 0x80
    jo das wars so, könnt ihr mir helfen? Also ich will die printfunktion aus dem Assemblercode in C benutzen :]


    mfg gater001
     
  2. 6. April 2011
    AW: mit Assembler linken?

    Musst zuerst deine asm Code in eine Objektdatei compilieren:
    Code:
    nasm -f obj myfile.asm
    
    Die erstellte Objektdatei linkst du dann beim C-Compiler.

    Desweiteren musst du den Prototyp der Funktion im C-Code definieren:
    Code:
    extern "C" void print();
    
    //Edit: Bei C-Code kannste das "C" soweit ich weiß weglassen, oder musst es sogar, musst mal schaune.

    Dann kannst du die funktion print verwenden.

    Mfg Rushh0ur
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.