Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Alternative zu Basic++ (Zeiger, Funktionen etc) Kategorie: C-Control I V1.2/2.0 (von Dietmar, Homepage - 29.01.2006 21:14)
 Als Antwort auf Re: Alternative zu Basic++ (Zeiger, Funktionen etc) von Dietmar - 29.01.2006 19:58
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station
Hallo zusammen

um der Sache mit den Zeigern auf den Grund zu gehen, habe ich ein kleines Testprogramm sowohl mit Basic++ als auch mit OCBASIC und Option CCBAS übersetzt. Es zeigen sich keine Unterschiede zwischen dem erzeugten Tokencode. Allerdings existiert in Basic++ offensichtlich ein Bug beim Adreßoperator "^". Der sollte die Adresse und nicht den Inhalt einer Variable zurückliefern.

Der OCBASIC-Code läuft auf der Open-Micro und sollte auch auf der M-Unit ab Version 2.03 funktionieren. Die Open-Micro liefert beim OCBASIC-Code als Ausgabe die vier Zahlen 9, 20, 8 und 9 auf einem Terminal. Mich würde interessieren, was die V2 bei diesem einfachen Programm ausgibt.


Basic++:
                                      define ^a byte
                                      define b byte
0004: 03 00 07    GOTO 0007    
0007: 16 09       PUSH BYTE[10]       a=^b
0009: 19 08       POP BYTE[9]  
000b: 14 00 14    PUSH 20             @a=20
000e: 16 08       PUSH BYTE[9]
0010: 24 02       HANDSHAKE ON
0012: 16 08       PUSH BYTE[9]        print a
0014: 1e          PRINT STACK  
0015: 1f 0d 0a 00 PRINT 13,10,0
0019: 16 08       PUSH BYTE[9]        print @a
001b: 24 00       HANDSHAKE OFF
001d: 1e          PRINT STACK  
001e: 1f 0d 0a 00 PRINT 13,10,0
0022: 16 08       PUSH BYTE[9]        print ^a
0024: 1e          PRINT STACK  
0025: 1f 0d 0a 00 PRINT 13,10,0
0029: 16 09       PUSH BYTE[10]       print ^b
002b: 1e          PRINT STACK  
002c: 1f 0d 0a 00 PRINT 13,10,0
0030: ff          END                 end


OCBASIC mit Option CCBAS:
                                      option ccbas
                                      define ^a byte[9]
                                      define b byte[10]

0004: 03 00 07    GOTO 0007           goto start
                                      #start
0007: 14 00 09    PUSH 9              a=^b
000a: 19 08       POP BYTE[9]
000c: 14 00 14    PUSH 20             @a=20
000f: 16 08       PUSH BYTE[9]
0011: 24 02       HANDSHAKE ON
0013: 16 08       PUSH BYTE[9]        print a
0015: 1e          PRINT STACK
0016: 1f 0d 0a 00 PRINT 13,10,0
001a: 16 08       PUSH BYTE[9]        print @a
001c: 24 00       HANDSHAKE OFF
001e: 1e          PRINT STACK
001f: 1f 0d 0a 00 PRINT 13,10,0
0023: 14 00 08    PUSH 8              print ^a
0026: 1e          PRINT STACK
0027: 1f 0d 0a 00 PRINT 13,10,0
002b: 14 00 09    PUSH 9              print ^b
002e: 1e          PRINT STACK
002f: 1f 0d 0a 00 PRINT 13,10,0
0033: ff          END                 end


Ohne "Option CCBAS" ist der OCBASIC-Code übrigens rund ein Drittel kleiner, aber dafür nur auf den OM-Kontrollern lauffähig.

Viele Grüße
Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Re: Alternative zu Basic++ (Zeiger, Funktionen etc) (von Manuel - 1.02.2006 19:24)
Re: Alternative zu Basic++ (Zeiger, Funktionen etc) (von Stefan Tappertzhofen - 30.01.2006 0:33)