Seite 2 von 13

Verfasst: 11.05.2006 17:44
von Karl
Gute Compiler erkennen zudem Pipelinehindernisse und versuchen Code so umzustellen, damit der Befehlsdurchsatz auf der Pipeline maximal wird.


Gruß Karl

Verfasst: 11.05.2006 17:45
von Kaeru Gaman
> Der PBCompiler übersetzt PureBasic in Assemblercode (Du hast vlt schon davon gehört, PB nimmt die Assemblervariante Flatassembler). Andere Compiler übersetzen Ihren Code in Assembler. Der Assemblercode wird dann in die Maschinensprache übersetzt und in eine EXE gepackt.

wenn du AssemblerCode und Assembler unterscheidest, wo ist dann noch der unterschied zu Maschinensprache?

als Assembler bezeichnet man im allgemeinen den Klartext der Zahlenfolgen die die CPU verarbeitet.

manche sagen, "Maschinensprache" seien nur die Zahlen, andere setzen den Begriff mit Assembler gleich.

aber wo ist ein anderer unterschied als die schreibweise, ob ich nun

Code: Alles auswählen

169,0,141,0,4,141,0,5,141,0,6,141,0,7
schreibe, oder

Code: Alles auswählen

LDA 0
STA 1024,Y
STA 1280,Y
STA 1536,Y
STA 1792,Y
(6502-ASM)

wie auch immer, die wenigsten Compiler erzeugen erst einen Klartextcode, bevor sie die Zahlenfolgen erzeugen.
insofern findet doch eine direkte übersetzung ins chinesische statt.

den vorteil, den PB durch die zwei-pass-compilierung hat ist praktisch folgende:
es wird keine übersetzung aus chinesischen versatzstücken angefertigt wie bei anderen compilern, sondern erst ein optimaler chinesischer text erstellt.

Verfasst: 11.05.2006 17:53
von Zaphod
naja, es ist aber auch nicht unüblich erst nach assembly zu übersetzen, gcc macht das zb immer.

@obba:
gäbe es einen maschinensprachen befehl, der "printn("bla")" ausdrückt, so gäbe es da nicht viel zu optimieren. hinter printn("bla") stehen aber in wirklichkeit ein paar hundert hochsprachen befehle die wiederum zu ein paar tausend maschineninstruktionen übersetzt werden. Dieser übersetzungsvorgang ist nicht so eindeutig wie es vieleicht den anschein hat.

Verfasst: 12.05.2006 08:33
von ts-soft
DarkDragon hat geschrieben:Hmm ok, wenn du das so nimmst: Es gibt verschiedene Arten sich auszudrücken und viele Wege um zum Ziel zu kommen.

Beispiel:

1) Hallo, ich bin Daniel.
2) Hallo, Daniel ist mein Name.

Wobei 1) das optimierteste ist(kürzer). So ist es auch mit Programmiersprachen.
Das zweite klingt aber so schön abgehoben :mrgreen:

Verfasst: 12.05.2006 08:45
von Rings
DarkDragon hat geschrieben:Hmm ok, wenn du das so nimmst: Es gibt verschiedene Arten sich auszudrücken und viele Wege um zum Ziel zu kommen.

Beispiel:

1) Hallo, ich bin Daniel.
2) Hallo, Daniel ist mein Name.

Wobei 1) das optimierteste ist(kürzer). So ist es auch mit Programmiersprachen.
Der Kanaken-Compiler optimiert
dementsprechend am besten:

3) Ich Daniel

:allright:


und nu jungs , geht raus und feiert das WochenEnde anstatt vor dem dämlichen computer zu sitzen

Verfasst: 12.05.2006 09:39
von Didelphodon
Um noch ein paar nette Begriffe einzuwerfen - und vielleicht hilfts Euch ja: Ihr redet eigentlich die ganze Zeit von Mnemonics und deren Übersetzung in die entsprechenden Opcodes.

Zum allgemeinen Verständnis, denn ich glaube, da reden EINIGE an einander vorbei: Assembler kann man sich mehr oder weniger (beachte: MEHR ODER WENIGER) als plattformunabhängige Maschinensprache fürs menschliche Auge vorstellen. Im Wesentlichen wird beim Compilen von Assembler und dem nachträglichen Linken (das nicht zu vergessen) klartextlichen (Assembler-)Befehle (das sind die Mnemonics) mittels einer "Übersetzungstabelle" in die numerischen (!!) Maschinenbefehle (das sind die Opcodes), die die CPU versteht/kann übersetzt. Zusätzlich werden dabei alle symbolischen Adressen (Variablen) in Adressen umgerechnet und das - mittels Assembleranweisungen gewünschte Speichermodell - um alles herumgelegt/erzeugt.

Interessant: Disassembliert mal einen selbst geschriebenen compilierten PureBasic-5-Zeiler, dann beginnt man die ENGE Beziehung zwischen Assembler und Maschinencode (und damit EXE oder COM) zu verstehen.
Und nebenbei habt Ihr dann auch schon die erste Lektion des Crackens gelernt. :lol:

@Rings: :allright: :lol: :lol: :lol: :allright:

LG Didel.

Verfasst: 12.05.2006 12:18
von AND51
(Ich spiele jetzt mal hallodri :lol: :allright: )
PureBasic hat geschrieben:Einführung

[...]

Dies bedeutet, dass derselbe Programmcode für beide Systeme nativ kompiliert werden kann und trotzdem die volle Power beider ausnutzt. Es gibt keine Flaschenhälse wie einen virtuellen Prozessor oder einen Code-Übersetzer; der generierte Code produziert ein optimiertes Executable, ungeachtet des OS, auf welchem es kompiliert wird. Die externen Bibliotheken sind vollständig in handoptimiertem Assembler, welcher sehr schnelle Befehle - oftmals schneller als die C/C++ Äquivalente - erzeugt, geschrieben.

Die bedeutendsten Features von PureBasic

[...]
- Sehr schnelle Kompilierung (über 300.000 Zeilen/Minute auf einem P200)
- Externe Bibliotheken sind vollständig in handoptimiertem Assembler geschrieben, um maximale Geschwindigkeit und Kompaktheit zu bieten
- Vorkompilierte Strukturen mit Konstanten-Dateien für extra-schnelle Kompilierung

Verfasst: 12.05.2006 17:52
von DarkDragon
Rings hat geschrieben:Der Kanaken-Compiler optimiert
dementsprechend am besten:

3) Ich Daniel

:allright:


und nu jungs , geht raus und feiert das WochenEnde anstatt vor dem dämlichen computer zu sitzen
Zum K.-Compiler: SyntaxError ergibt das bei mir ;-) .
Zum kleingeschriebenen: :lol: Du glaubst wohl auch noch an den Osterhasen, oder? Ich geh doch nicht bei diesem Sauwetter(Die Sonne scheint) raus.

Verfasst: 12.05.2006 19:31
von MVXA
Könnte man ja braun werden und Vitamin D produzieren, schrecklicher Gedanke :D

Verfasst: 12.05.2006 20:48
von Alves
Ich liebe die Sonne!!
Ich würd sie umarmen, wenn sie dichter dan wär.
Warmes Wetter ist so schön, da geh ich immer skaten.