schnellere Sprachen??
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> 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 nunschreibe, oder
(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.
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
Code: Alles auswählen
LDA 0
STA 1024,Y
STA 1280,Y
STA 1536,Y
STA 1792,Y
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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
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.
@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.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Das zweite klingt aber so schön abgehobenDarkDragon 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.

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Der Kanaken-Compiler optimiertDarkDragon 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.
dementsprechend am besten:
3) Ich Daniel

und nu jungs , geht raus und feiert das WochenEnde anstatt vor dem dämlichen computer zu sitzen
Rings hat geschrieben:ziert sich nich beim zitieren
- Didelphodon
- Beiträge: 360
- Registriert: 18.12.2004 13:03
- Wohnort: Wien
- Kontaktdaten:
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.
@Rings:
LG Didel.
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.

@Rings:





LG Didel.
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Fighting for peace is like fuc*ing for virginity!
(Ich spiele jetzt mal hallodri
)


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
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Zum K.-Compiler: SyntaxError ergibt das bei mirRings hat geschrieben:Der Kanaken-Compiler optimiert
dementsprechend am besten:
3) Ich Daniel
und nu jungs , geht raus und feiert das WochenEnde anstatt vor dem dämlichen computer zu sitzen

Zum kleingeschriebenen:

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.