Was proggt Ihr ?

Es gibt 71 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    @Artentus: Wie ein Low-Level Basic.
    Die meisten der Befehle sind 1 zu 1 als Maschinencode verfügbar (z.B. C = 3 oder O1 = C).
    Durch den Compiler wird es halt vereinfacht, Sprachelemente zu verwenden und man muss sich nicht um Sprungadressen kümmern.
    Und man kann sie ein kleines Framework bauen, also Code in einer Datei in mehreren Projekten importieren.
    Beispiel:
    Ich packe das mal in einen Expander, weil es ziemlich aufgebläht ist

    VB.NET-Quellcode

    1. Imports Math 'Importiert den Code aus der Datei Math.rcb, sodass er aufgerufen werden kann.
    2. Dim Variable As D(1) 'Die Register D(1) bis D(15) können für Variablendeklarationen verwendet werden. D(0) theoretisch auch, aber das hat eine Sonderrolle.
    3. Sub Main()
    4. C = I0 'Wert vom Eingang 0 lesen.
    5. A = C 'A und B sind Operanden für die ALU.
    6. C = I1
    7. B = C
    8. Call Math.BMinusA() 'Ruft die Methode BMinusA auf, die in einem Namespace mit dem Namen Math deklariert wurde (befindet sich in der importierten Math.
    9. Variable = C 'Zuweisung der Variable.
    10. O0 = C 'Errechneten Wert auf Ausgang 0 schreiben.
    11. Call Foo() 'Ruft die Methode Foo auf, die in der selben Datei deklariert wurde.
    12. End Sub
    13. Sub Foo()
    14. C = 8 'Konstanten Wert 8 laden.
    15. D(0) = C 'Das D(0)-Register wird für Vergleiche verwendet.
    16. C = Variable
    17. If C > D(0) Then
    18. C = B1101 'Konstanten Binärwert 1101 (13 in dezimal) laden.
    19. O1 = C
    20. End If
    21. End Sub

    Inhalt von Math.rcb

    VB.NET-Quellcode

    1. Namespace Math 'Deklariert alle nachfolgenden Methoden im Math-Namespace. Methoden daraus werden mit NamespaceName.MethodenName identifiziert.
    2. Sub BMinusA() 'Rechnet B-A und speichert das Ergebnis in C.
    3. C = Not A 'Wendet den den Not-Operator auf A an und speichert das Ergebnis in C.
    4. A = C
    5. C = A + B 'Addiert A und B ....
    6. A = C
    7. C = A + 1
    8. End Sub


    Beim Kompilieren wird zuerst der Code aus der Haupt-Codedatei und dann aus den importierten Dateien (in Reihenfolge) bearbeitet und einfach hintereinander gepackt.
    Der Code sieht im "Arbeitsspeicher" (eigentlich ein EEPROM) so aus (Die Adressen sind hier immer um 1 zu hoch. Das liegt daran, dass die Zeilennummern im VB-Code-Tag mit 1 beginnen. So kann man es besser lesen):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. C = I0 'Die erste Anweisung, die vorkommt. Alles vorher ist nur Syntax. (Anfang von Sub Main())
    2. A = C
    3. C = I1
    4. B = C
    5. Call 'Die Call-Anweisung benötigt eine Adresse in den nächsten 2 Bytes (little-endian).
    6. 0
    7. 23
    8. D(1) = C 'Variable wurde "As D(1)" deklariert. Deshalb wird das D(1)-Register im Code verwendet.
    9. O0 = C
    10. Call
    11. 0
    12. 14
    13. End 'Beendet die Codeausführung und springt zu Adresse 0. (Ende von Sub Main())
    14. C = 8 '(Anfang von Sub Foo())
    15. D(0) = C
    16. C = D(1)
    17. If Not C > D(0) Then Goto 'Ist die Negation der Bedingung erfüllt, wird der Code übersprungen. Benötigt eine Adresse.
    18. 0
    19. 22
    20. C = 13
    21. O1 = C
    22. Return 'Kehrt zur vorigen Methode zurück. (Ende von Sub Foo())
    23. C = Not A '(Anfang von Sub BMinusA())
    24. A = C
    25. C = A + B
    26. A = C
    27. C = A + 1
    28. Return '(Ende von Sub BMinusA())
    29. End 'Diese 2 End-Anweisungen sind im Code einzigartig. Die IDE kann den Maschinencode aus dem EEPROM lesen. Durch zwei aufeinanderfolgende End-Anweisungen wird erkannt, dass es das Ende des Codes ist.
    30. End 'Natürlich kann eine Sprungadresse auch genau diese Byte-Werte haben, aber es ist bekannt, welche Befehle eine Adresse benötigen. Also "Call, End, End" wird nicht als Ende angesehen, weil Call eine Adresse benötigt.

    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Ich hab letzte Woche nen Brainfuck-Compiler geschrieben, der den BF-Code direkt als IL-Code emitted. Weil es .NET ist, kann man die BF-Assemlby dann auch mit VB oder C# verwenden. Macht zwar wenig Sinn, aber es geht.
    Hab das hautpsächlich gemacht, damit ich mal wieder nen bisschen IL sehe und weil mir langweilig war.
    Da, könnt ihr haben: i.holz.nu/a4c8c.cs
    Hab auch noch nen Debugger in nem Konsolenfenster auf Interpreterbasis; der is aber ranz.


    Ansonsten:
    vb-paradise.de/sonstiges/showr…ols-hilfsprogramme/39990-
    github.com/nikeee/pixlib
    Und was noch so in meinen GitHub-Repos ist.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

    @Artentus: Ganz einfach ist es nicht (selbstlob ;) ), aber es geht voran. Vieles ergibt sich von selbst.

    @nikeee13: Der Brainfuck-Compiler gefällt mir.... nur kenne ich mich mit Brainfuck zu wenig aus ^^
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Gut dann häng ich auch mal einen screen an xD
    oder ein paar o.o
    Also einmal die Website und dann den server auf dem das läuft ^^
    Bilder
    • screen_1.png

      92,61 kB, 1.246×831, 301 mal angesehen
    • server_1.jpg

      218,47 kB, 1.316×924, 220 mal angesehen
    • 100_3989.jpg

      808,28 kB, 2.224×1.196, 214 mal angesehen
    • 100_3990.jpg

      810,84 kB, 2.180×1.236, 161 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ikaros“ ()

    Um jetzt nicht zuuuu viel zu verraten ;)
    Also ich arbeite momentan an einem Tcp/Ip Chat. Der Server ist (Multiuser/Multithreaded) und der komplette Chat ist AES 256 bit Encrypted funktioniert jedoch auch mit mehr als 2 Clients obwohl jeder Client einen eigenen Key per Diffi Hellman Key Exchange mit dem Server gemacht hat. Das einzige woran es momentan "hängt" ist die berechnung einer Primitvwurzel, die ist momentan noch Hardcoded.. :/

    progThis schrieb:

    Ich programmiere zur Zeit an Awid One das ist wie Die XBOX One den ganzen Computer mit Sprachen steuern.Und an OnBoard ein Malprogramm für Windows,Windows-Tablets und SmartBoards.

    Ja, ein Programm, mit dem ich einige Sachen am PC steuern konnte, haate ich auch mal gemacht, ist garnicht mal so schwer, die spracherkennung ist echt super
    Huiii, Ich bin stolz auf mich:

    Ich schreibe für meinen Music-Downloader gerade eine Klasse, die Videos von Youtube runterlädt und nach Mp3 konvertiert (später kommt dann noch Tagediting etc. dazu) - und - ES KLAPPT :thumbsup:

    Freu' mich grad' wie ein kleines Kind :D
    Willkommen in der Welt von WPF.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!