Essay - Free Blitz2D
Übersicht Sonstiges SmalltalkGehe zu Seite Zurück 1, 2, 3, 4 Weiter
Vertex |
Fr, Nov 09, 2007 7:34 Antworten mit Zitat |
|
---|---|---|
Aus dem AST einen C/C++ Code(ich liebäugle aber mit reinem C) zu erstellen ist einfacher, als einen Bytecode zu produzieren. Finde es auch unsinnig, das ganze in einer VM laufen zu lassen. Angemerkt sei hier aber, dass .NET NICHT in einer virtuellen Maschine ausgeführt wird. Der CIL Code wird zuvor vom Framework in echten Maschinencode kompiliert. Den Spaß in Java zu konvertieren wäre vllt. in Richtung Blitz4HandyGame sinnig.
Ein Backend direkt für x86 zu erzeugten, bekomme ich nicht hin - dazu fehlt mir die Erfahrung und von optimierten Code kann dann auch nicht mehr die Rede sein. Den C Code als Ausgabe finde ich am idealsten. C ist mit den Standardlibs Plattform unabhängig und erzeugt einen optimierten Maschinencode. Die Runtime muss dann für die Plattformen zum Teil speziell entwickelt werden. Aber mit OpenGL usw. dürfte das kein Problem darstellen. Ach ja, der Compiler wird definitiv NICHt in BlitzMax entwickelt werden. Vllt. später mal portiert, aber nicht entwickelt. Man braucht bei einem solchen Projekt ganz einfach eine Entwicklungsumgebung, die einem unter die Arme greift. Blitz soll auch nicht modifiziert werden. Es soll möglich sein, alte Blitz2D Projekte damit zu kompilieren, ohne etwas zu verändern(Userlibs ausgenommen). Aber mit ein paar Modifikationen beschäftige ich mich dennoch: Code: [AUSKLAPPEN] ; Ein Ausdruck über mehrere Zeilen verteilt
If X > Y And .. A > B Or .. C < D Then Print("Blub") Code: [AUSKLAPPEN] Local MyPointer@, ABC%, pABC@
// Funktionspointer für Decls MyPointer = &CallMe ABC = 10 pABC = &ABC Print("pABC zeigt auf den Wert " + pABC[0]) Function CallMe(X%, Y%) Print("X = " + X + "; Y = " + Y) End Function Oder vllt. einfach nur den Adressoperator & für Userlibs. mfg olli |
||
vertex.dreamfall.at | GitHub |
TheShadowModerator |
Fr, Nov 09, 2007 19:26 Antworten mit Zitat |
|
---|---|---|
im prinzip ist es egal wohin es konvertiert wird...
bei Blitz2D kann es problemlos auch C sein Bei BlitzMax sollte es schon C++ sein Assembler soll an sich auch nicht sooo schwer sein - aber das ist mir zu lowlevel - und im prinzip bringt es GAR nix nach assembler zu konvertieren, wenn man keine Ahnung von Optimierugen hat... Z.B. ist BlitzMax immer noch einen kleinen taken langsamer als GCC - und GCC ist viel langsamer als MS-Compiler... Java - davon weiß ich nicht was ich halten soll... Genau wie von .NET - ich habe hier nichtmal NET-Framework installiert (Java schon, denn im Internet braucht man es ab und an) - und ich habe keine einzige Anwendung die NET überhaupt braucht... ich halte NET für eine Fehlentwicklung - das Konzept ist zwar interessant und z.B. C# besser als C++ - aber ich mag doch lieber native Anwendungen... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Vertex |
Sa, Nov 10, 2007 22:16 Antworten mit Zitat |
|
---|---|---|
Joar, den C Compiler kann man sich ja nach belieben aussuchen. Ich habe dazu auch keine Meinung, da ich bisher nie mit denen gearbeitet habe.
Und zum Thema .NET - ja, das ist deine Meinung. Ich finde es eine der besten Innovationen überhaupt ^^ Wie dem auch sei - hier der aktuelle Stand vom Lexer/Scanner: freeblitz.zip (29 KByte)(habe mal alles rein genommen, was wichtig sein könnte). Ich arbeite hier nicht mit Exceptions. Diese werden durch den Joker-Token ersetzt. Der Grund ist, FreeBlitz soll nicht nur immer einen Syntaxfehler in einer Messagebox ausgeben, sondern gleich mehrere auf einmal. Das macht das Programmieren schneller. Naja, schaut es euch mal an. Testet bitte mal ein paar Quellcodes durch und sagt mir ggf. Fehler an. Ich weiß aber, dass z.Z. keine Umlaute unterstützt werden. Hier muss ich demnächst auf UTF8 umstellen. mfg olli |
||
vertex.dreamfall.at | GitHub |
DAK |
So, Nov 11, 2007 0:41 Antworten mit Zitat |
|
---|---|---|
wenn da drei leute an genau dem selben arbeiten, bringts recht wenig... wie wärs, wenn einer es nach java macht und die anderen nach c/c++... dann hätts einen sinn, das es mehrere machen (ja ich weiß, ich hab gut reden, als einer der da nicht mit macht, aber so wörs meiner Meinung nach am besten und gschiktesten....)
Das mim java wegen blitz4handy, weil grad am handy lassen sich minigames noch verkaufen und anderes wird mit bb kaum gemacht... |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
TheShadowModerator |
So, Nov 11, 2007 1:00 Antworten mit Zitat |
|
---|---|---|
Zitat: Joar, den C Compiler kann man sich ja nach belieben aussuchen. Ich habe dazu auch keine Meinung, da ich bisher nie mit denen gearbeitet habe.
Tatsächlich gibt es gar nicht so viele gute auf dem Markt - die zudem OpenSource sind. Zwischen den Compilern gibt es minimale Unterschiede - was auch an libs/includes liegen kann... Zitat: Testet bitte mal ein paar Quellcodes durch und sagt mir ggf. Fehler an
hab nur bisschen getestet - scheint zu gehen... Zitat: wenn da drei leute an genau dem selben arbeiten, bringts recht wenig...
Ja das ist schon klar - aber jeder macht es bisschen anders... Der eine codet in C#, der andere in BB und ich in C. Weiterhin codet einer BB-Klon und andere neue Sprache... Die Ausgabesprache und Konzepte sind auch hier und da anders... Zitat: Das mim java wegen blitz4handy, weil grad am handy lassen sich minigames noch verkaufen und anderes wird mit bb kaum gemacht...
1) Wird Java Mobile in den nächsten 10 jahren aussterben und 2) Java auf Handy ist grausam - denn jedes Spiel das auf Handy läuft wurde auf jedem unterstützten Modell auch getestet - d.h. die Tester haben 100te handys zum testen da - das ist Wahnsinn. Ich denke es ist schwer wenn mehrere an einem Projekt arbeiten, solange es nix lauffähiges gibt. Ich bin eher der Meinung dass Libs/Modules von dritten gecodet werden können. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
DAK |
So, Nov 11, 2007 1:28 Antworten mit Zitat |
|
---|---|---|
TheShadow hat Folgendes geschrieben: 1) Wird Java Mobile in den nächsten 10 jahren aussterben
Da hat mans wenigstens noch 10 Jahre... Ich bin mir relativ sicher, das es mit Windows in 10 Jahren ähnlich ausschaut... TheShadow hat Folgendes geschrieben: 2) Java auf Handy ist grausam
Trotzdem gibts anscheinend einen Haufen Leute, die genau damit ihr Geld machen. Und ich könnte mir denken, das BB am Handy wenigstens einfacher zu Proggen währe, als Java am Handy... |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
lettorTrepuS |
So, Nov 11, 2007 1:43 Antworten mit Zitat |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
TheShadowModerator |
So, Nov 11, 2007 13:54 Antworten mit Zitat |
|
---|---|---|
ST ich glaub du weißt, dass wenn ein Handyspiel bei jamba und Co verkauft wird, dass es auf allen unterstützten Geräten getestet werden muss - das ist ein Aufwand ohne Gleichen
Bei PC testet man es auf win98/2000/xp/vista hier und da linux und das wars... bei handy ist der aufwand 20x hoher das zu testen... Man kann da nicht einfach so einen Konverter coden und davon ausgehen, dass es funzt. Solange es solche schammigen Standard wie J2ME gibt, ist die Entwicklung sinnlos... Es ist ein Riesenunterschied zu Java auf dem Desktop. SUN hat offiziell J2ME begraben, wenn du es in news mitbekommen hast... Zitat: Trotzdem gibts anscheinend einen Haufen Leute, die genau damit ihr Geld machen. Und ich könnte mir denken, das BB am Handy wenigstens einfacher zu Proggen währe, als Java am Handy...
Spiele zu testen ist nicht vernünftig möglich. Ein Emulator am PC arbeitet anders wie es am handy später aussieht. Jedes handy kann bugs haben die man immer umgehen muss... Das Coden in Java ist an sich OK - wie in BB nur extrem OOp lastig. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
lettorTrepuS |
So, Nov 11, 2007 17:22 Antworten mit Zitat |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
- Zuletzt bearbeitet von lettorTrepuS am So, Nov 11, 2007 17:40, insgesamt einmal bearbeitet
mahe |
So, Nov 11, 2007 17:40 Antworten mit Zitat |
|
---|---|---|
ST du hast das nicht richtig verstanden.
Kaum ein Handyhersteller hat die J2ME-Spezifikationen vollständig und richtig umgesetzt. Oft unterscheiden sich die Java-Implementation schon zwischen den Modellen eines Herstellers so stark, dass ein Programm für jedes Modell angepasst werden muss. Handyspezifische Spezialfunktionen sind da noch mal ein ganz anderes Thema. |
||
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ, |
lettorTrepuS |
So, Nov 11, 2007 17:47 Antworten mit Zitat |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Vertex |
Mo, Nov 12, 2007 1:47 Antworten mit Zitat |
|
---|---|---|
Haltet euch mal bitte etwas zurück wegen den Handyspielen - das könnt separat diskutieren.
Um das mal klar zu stellen: Ich möchte einen freien Compiler für Blitz2D schaffen der mit dem kommerziellen kompatibel ist. Mit Basicprogger habe ich bereits mich darüber unterhalten. Wir sind da unterschiedlicher Auffassung. Er möchte ein überarbeitetes Blitz ich ein 100% kompatibles. D. h., wir arbeiten nicht am selben Projekt. Habe heute nochmal den Lexer umgeschrieben. Er unterstützt nun auch Umlaute: freeblitz.zip (29 KByte) Ich muss mich mal etwas zurücknehmen bei den ganzen schönen C# Features, sonst wird wohl möglich noch die Performance darunter zu leiden haben. Jetzt kann die Arbeit am Parser beginnen. mfg olli |
||
vertex.dreamfall.at | GitHub |
lettorTrepuS |
Mo, Nov 12, 2007 4:56 Antworten mit Zitat |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Vertex |
Mo, Nov 12, 2007 7:12 Antworten mit Zitat |
|
---|---|---|
Ah, war ich also doch zu voreilig ^^ Ist jedenfalls behoben. Lag in der Methode scanIdentifier in Scanner.cs:
Code: [AUSKLAPPEN] // Pop positions
character.Content = ' '; character.IsWhitespace = true; character.IsEOF = false; character.Position = savePosition2; character.Row = saveRow; character.Column = saveColumn; reader.BaseStream.Seek(savePosition, SeekOrigin.Begin); Hatte zuvor nur Content auf ' ' gesetzt, ohne den Character als Whitespace zu und nicht EOF zu markieren. Ergo, es kam beim nächsten NextToken ein Leerzeichen was nicht mehr als Whitespace erkannt wurde und übersprungen werden konnte. SQLite dafür zu verwenden klingt interessant, kann mir aber nicht vorstellen, dass das schneller sein soll, als die kapazitären ArrayLists. Danke für die Fehlermeldung ^^ mfg olli |
||
vertex.dreamfall.at | GitHub |
TheShadowModerator |
Mo, Nov 12, 2007 18:17 Antworten mit Zitat |
|
---|---|---|
Zitat: Jetzt kann die Arbeit am Parser beginnen.
hust - über den Punkt bin ich noch nie drübergekommen... aber evtl. schaffe ich es diesmal Zitat: Auch habe ich hier noch einen kleinen Tipp: Verwende am besten SQLite für die Speicherung von Variablen, Types+Felder usw. So kannst du garantiert viel an Geschwindigkeit rausholen.
ich hab mir jetzt sqlite nur grob angeguckt... aber ich denke sqlite ist übertrieben... außerdem wird die Datenbank als Datei abgebildet... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
FWeinbehemals "ich" |
Mo, Nov 12, 2007 18:53 Antworten mit Zitat |
|
---|---|---|
Ich verfolge das Thema auch schon sehr lange und bin Ziemlich Beindruckt (ich habe mich noch nie mit Solch einem Thema Befasst (außer ner Kleinen Script Sprache) und bin wircklich überrascht was das für eine Arbeit ist.
@Vertex Dein Programm läuft bei mir sehr gut er erkennt alles und giebt mir auch keinen Fehler aus |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
lettorTrepuS |
Mo, Nov 12, 2007 21:22 Antworten mit Zitat |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Florian |
Fr, Nov 16, 2007 23:00 Antworten mit Zitat |
|
---|---|---|
BasicCompiler
Input Code: [AUSKLAPPEN] FUNCTION MAIN DO ASM PUSH EAX PUSH EBX MOV EAX,100 MOV EBX,50 ADD EAX,EBX POP EAX POP EBX jmp Main_asm MessageBoxIrgendeintitel db "Unglaublich, aber wahr",0 MessageBoxNixsagenderInhalt db "Tolle Nachricht, was ?",0 Main_asm: push DWORD MB_ICONHAND + MB_OKCANCEL push DWORD MessageBoxIrgendeintitel push DWORD MessageBoxNixsagenderInhalt ;hier kann man das HANDLE fuer unser Fenster angeben, ;aber Fenster kommen erst im naechsten Tutorial: push DWORD 0 CALL [MessageBoxA] ENDASM SYSTEM enddo EXITFUNCTION ENDFUNCTION Output Code: [AUSKLAPPEN] %include "win32n.inc" EXTERN ExitProcess IMPORT ExitProcess kernel32.dll EXTERN MessageBoxA IMPORT MessageBoxA user32.dll segment .data USE32 ErrorCode dd 0 segment .code USE32 ..start call main push dword ErrorCode call [ExitProcess] main: ;main L1: push ebp mov ebp,esp L3: PUSH EAX PUSH EBX MOV EAX,100 MOV EBX,50 ADD EAX,EBX POP EAX POP EBX jmp Main_asm MessageBoxIrgendeintitel db "Unglaublich, aber wahr",0 MessageBoxNixsagenderInhalt db "Tolle Nachricht, was ?",0 Main_asm: push DWORD MB_ICONHAND+MB_OKCANCEL push DWORD MessageBoxIrgendeintitel push DWORD MessageBoxNixsagenderInhalt ;hier kann man das HANDLE fuer unser Fenster angeben, ;aber Fenster kommen erst im naechsten Tutorial: push DWORD 0 CALL[MessageBoxA] push dword ErrorCode call [ExitProcess] JMP L3 pop ebp RET pop ebp RET |
||
TheShadowModerator |
Sa, Nov 17, 2007 10:41 Antworten mit Zitat |
|
---|---|---|
Und was möchtest du uns mitteilen?
Das man genau so gut nach Assembler konvertieren kann? Natürlich geht es - ABER... zum einen muss man wirklich schon ASM seit jahren programmieren, um alle Tricks der Optimierung zu kennen - ansonsten wird es langsamer sein als C. Beispiel: i = 320 * 200 * 32 So einen Code würde ein guter Compiler optimieren, und zwar nach: i=2048000 Und dann würde man wiederum auch einen optimierten ASM-Output generieren. Von solchen Compiler-Optimierungen und ASM-Optimierungen gibt es massenweise. Setzt man dann auf einen C(++) Compiler, dann wird die Entwicklung enorm vereinfacht - da bei C(++) schon alles durchgekaut ist. Außerdem ist so ein ASM-Output nicht mehr portabel - d.h. für jedes System muss man große Teile anpassen. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Silver_Knee |
Sa, Nov 17, 2007 12:34 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] SetBuffer BackBuffer(
und der Vertex-lexer sagt: Code: [AUSKLAPPEN] Bei blitz würde kommen: Code: [AUSKLAPPEN] ---------------------------
Blitz Basic --------------------------- Expecting ')' --------------------------- OK --------------------------- |
||
Gehe zu Seite Zurück 1, 2, 3, 4 Weiter
Übersicht Sonstiges Smalltalk
Powered by phpBB © 2001 - 2006, phpBB Group