G
Basti aus Cottbus schrieb:
Danke für den Vorschlag aber hat leider dennoch nicht funktioniert.
Dann machst du definitiv was falsch. Habs jetzt gerade mal probiert und funktioniert problemlos. Da ich leider deinen Assembler nicht kenne, hab ich's einfach mal mit meinem probiert (nasm) und den Code entsprechend angepasst.
assembler.h
#ifndef Assembler_h
#define Assembler_h
extern "C" {
unsigned summe (unsigned x, unsigned y);
}
class Assembler {
public:
unsigned summieren (unsigned zahl1, unsigned zahl2) const
{
return ::summe (zahl1, zahl2);
}
};
#endif
assembler.cpp
#include <iostream>
#include "assembler.h"
using namespace std;
int main ()
{
Assembler assem;
unsigned x = 15;
unsigned y = 10;
unsigned z = assem.summieren(x, y);
cout << x << " + " << y << " = " << z << endl;
return 0;
}
assembler1.asm
;[GLOBAL summe]
global _summe
; IMPLEMENTIERUNG DER FUNKTIONEN
;[SECTION .text]
section .text
_summe:
push ebp
mov ebp,esp
mov edx,[8+ebp]
mov eax,[12+ebp]
; add eax, [eax + edx] ; ?
add eax, edx
pop ebp
ret
Und die Erstellung mit nasm und msc über die Kommandozeile
nasm -f win32 assembler1.asm
cl /EHsc assembler.cpp assembler1.obj
Wie gesagt, der Unterstrich bei summe ist wichtig. Ansonsten funktioniert es nicht.