Seite 1 von 1

C und Assembler ein widerspenstiges Paar

Verfasst: 24.06.2010 22:39
von Macros
HI,

nach langer Zeit melde ich mich auch mal wieder mit einer Frage.
Da ich PB inzwischen aus dem FF beherrsche geht es diesmal um etwas anderes:

Die Schnittstelle zwischen C und Assembler.
Gezwungenermaßen NASM und 32 Bit.

Ich soll eine Funktion (in Assembler) schreiben, die Werte aus zwei Eingabearrays nimmt, und daraus dann Werte errechnet,
die in zwei Ausgabearrays geschrieben werden. Alles vom Typ Float.
Ich will euch natürlich nicht nach einer kompletten Lösung fragen, aber da es schon an den Anfängen hapert, wäre ich sehr dankbar,
wenn jemand mir einfach nur einen Code zeigen Könnte, der den ersten Wert aus Array 1 und 2 nimmt, und ihn in Array 3 schreibt.
Die Rechenfunktion bekomme ich dann (hoffentlich) schon hin ;)

Die Funktion ist in C so vordeklariert:
extern void calc(float *, float *, float *,float *);

Den kompletten C Code findet ihr hier:
http://web254.rshost.de/PB/CASM/read.h
http://web254.rshost.de/PB/CASM/read.c

Das Assemblerfile:

Code: Alles auswählen

section .text 			;Code
global calc
calc:
;Insert Code here				
  RET			; Return to main program

section .data
  e_0: dq 8.854187817E-12
  e_q: dq 4.0
  e_t: dq 2.0
Und mein makefile sowie eine ui.txt (Eingabedatei):
http://web254.rshost.de/PB/CASM/Makefile
http://web254.rshost.de/PB/CASM/ui.txt

Ich geb auch gerne Hilfe etwas einzurichten.
Für Windows benötigt die Funktion sowie das label "calc" im Assembler File einen führenden unterstrich soweit ich weiß.
Unter Linux muss man nasm (sowie unter Ubuntu das Paket lib32z1-dev
in einem 64 Bit System) installieren.

Grüße
Macros

Re: C und Assembler ein widerspenstiges Paar

Verfasst: 01.07.2010 02:29
von ralle
Keine direkte Lösung, aber vielleicht hilft dir das hier weiter:
http://www.ibm.com/developerworks/linux ... -nasm.html

Unter dem Punkt "Functions, external routines, and the stack" wird erläutert, wie man ein Array aus Integern sortiert. Vielleicht kannst damit was anfangen.

mfG
Ralle

Re: C und Assembler ein widerspenstiges Paar

Verfasst: 01.07.2010 13:02
von Macros
Danke dir Ralle,
Das Dokument ist ja fast ein Assembler Tutorial.

Inzwischen hab ich das Problem nach langen rumärgern selbst lösen können.
Wenn ich etwas länger Zeit habe (vermutlich erst in einer Woche)
werde ich mal ein kurzes Tutorial veröffentlichen, wie man sich eine Bibliothek in Assembler schreiben kann.