Wie Arbeitet CompareMemory() ??

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Ich stimme Kiffi da zu, du solltest diese Änderung mal Fred vorschlagen, mit kleiner Testanwendung, damit er das für zukünftige Versionen übernehmen kann. Und je mehr das in diese Richtung geht, dass Libs auch mal von Usern überarbeitet werden, je wahrscheinlicher ist es, dass PB vielleicht irgendwann mal (vielleicht auch nur teilweise) open Source werden könnte, damit die Libs weiterhin optimiert werden.
Also nix wie ab zu Fred mit der Memory-Änderung. ;)
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Da wird es nur ein Problem geben. Freds Lib ist in C programmiert. Aber ich habe die Procedure in ASM geschrieben. Also entweder sein Compiler unterstützt inline ASM oder er steigt auf Assembler um. Und das halte ich beides für eher unwarscheinlich. Aber versuchen werd ich es trotzdem..
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Eine Möglichkeit zum Mischen gibt es nicht? Dass man sagt, die CompareMemory ist in Assembler, die Gadget wieder in C, die und die wider Assemler... Wär' schade wenn daraus nichts wird.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Wieso Gadget? Nein, nur die Memory-Library müsste Assembler sein, die restlichen Librarys haben damit ja nichts zu tun und könnten ruhig weiterhin C-Code bleiben.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Das war ein Beispiel.^^ Ich meinte ja, ob man die mischen kann, alle anderen (Als Beispiek Gadget) sind C, die CompareMemory wird Assembler.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

@Deeem
Woher weisst du, dass sie in C ist?
Nach Stefans LibraryDescriptor (der von Fred ist ja nicht aktuell) steht da
Memory (Language: ASM)
------
_PB_Memory_CurrentStringPointer
_PB_Memory_Heap ; handle to the heap for the memory-library
Ich weiss nicht, woher er die Information hat, aber mich würde es von dir
interessieren :)

Danke schon mal
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Eine Library muss aus einer Sprache bestehen. Also entweder ist die Memory-Library C oder ASM Code und damit müssten die restlichen Procs auch Asm sein. Allerdings könnte man auch CompareMemory aus der Library nehmen und in eine eigene packen, das würde das ganze Problem lösen.

@remi_meier: Ganz einfach, alle Parameter werden bei der orginalen Library über den Stack gepusht, bei Asm-Libraries wird der erste Parameter aber über Eax weitergegeben und nur der Rest über den Stack, desswegen bin ich davon ausgegangen das es eine C-Library ist. Außerdem beinhalten fast alle Proceduren in der Library einen "Ebp-Stack" der sogut wie immer sinnlos ist, wär also bischen seltsam wenn jemand etwas sinnloses per Hand in die Library schreibt...
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Wat ne diskusion....

Beitrag von PAMKKKKK »

Da habe ich ja was losgetreten....
Super diskusion hier :allright:

@Sunny u. @All
Auch wenn es Offtopic ist:
Ich finde es auch sehr befremdlich das das PureBasic Team aus einem zusammengewürfelten haufen von Einzelkämpfern besteht.
Was passiert uns allen wen Fred morgen vom Bus überfahren wird ??
(Gott möge ihn davor bewaren!!! )
Leute die mit Purebasic Kommerzielle Programme entwickeln haben dann ein paar Probleme...
Deshalb finde ich, auch um Fred Arbeit abzunehmen, gehört zumindest der Editor (IDE) = OpenSource!!!

@Deeem2031
Danke für das reengeneering!
Werd dein Proc mal ausprobieren und berichten.
Wie arbeitet dein Proc denn nun ??
Byteweise und bei ungleichheit = Abbruch ??
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Deeem2031 hat geschrieben:Ganz einfach, alle Parameter werden bei der orginalen Library über den Stack gepusht, bei Asm-Libraries wird der erste Parameter aber über Eax weitergegeben und nur der Rest über den Stack, desswegen bin ich davon ausgegangen das es eine C-Library ist. Außerdem beinhalten fast alle Proceduren in der Library einen "Ebp-Stack" der sogut wie immer sinnlos ist, wär also bischen seltsam wenn jemand etwas sinnloses per Hand in die Library schreibt...
Naja, das kommt immer auf die Calling Convention drauf an, aber eigentlich
macht es Sinn.
Trotzdem solltest du Vermutungen immer deklarieren, sonst entstehen
Missverständnisse.
Die Frage geht jetzt an Stefan weiter, woher hast du deine Infos?

> Eine Library muss aus einer Sprache bestehen
Muss doch nicht, man kann ja mit InlineAsm in C arbeiten. Es sollten nur
immer die gleichen Aufrufmethoden verwendet werden!
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Re: Wat ne diskusion....

Beitrag von Deeem2031 »

PAMKKKKK hat geschrieben:Wie arbeitet dein Proc denn nun ??
Byteweise und bei ungleichheit = Abbruch ??
Nein, long-weise. Und wenn ein paar Bytes übrig bleiben werden die extra getestet.
remi_meier hat geschrieben:> Eine Library muss aus einer Sprache bestehen
Muss doch nicht, man kann ja mit InlineAsm in C arbeiten. Es sollten nur
immer die gleichen Aufrufmethoden verwendet werden!
Ja, klar. Aber wie gesagt halte ich es nicht für warscheinlich das Freds Compiler inlineAssembler unterstützt.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Antworten