Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


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 

 Demoprogramm: Geschwindigkeit von Code, der mit OCBASR kompiliert wurde Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 20.02.2020 20:20)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini Station


' ===========================================================================
' Demonstration der Geschwindigkeit von Code, der mit OCBASR kompiliert wurde
' In OCBASR 4.01 auf der Open-Maxi von Dietmar Harlos am 20. Februar 2020
' ===========================================================================

' Um BASIC-Programme noch weiter zu beschleunigen, habe ich für die
' OM-Controller einen Compiler namens OCBASR geschrieben, mit dem der
' Anwender BASIC-Quellcode sehr komfortabel in Maschinensprache, bzw.
' Assembler, umwandeln kann. Der Standard-Compiler OCBASIC übersetzt
' bekanntlich BASIC-Quellcode in Tokencode, der vom Interpreter in der OM
' ausgeführt wird. Gegenüber diesem interpretiertem Tokencode wird die vom
' Compiler OCBASR erzeugte Maschinensprache erheblich schneller ausgeführt.

' Der zu beschleunigende Code muß in einer Subroutine oder in einer Funktion
' stehen. Wird hinter die Startzeile dieser Subroutine oder Funktion das
' Schlüsselwort COMPILE angefügt, wird der OCBASR-Compiler aktiv und
' übersetzt den in ihr stehenden BASIC-Sourcecode in die Maschinensprache.
' Dieser Programmteil wird nun üblicherweise 3 bis 4 mal schneller
' ausgeführt. Einige BASIC-Befehle sind sogar 10 bis 20 mal schneller.

' Dieses Programm ist 18.4/1.2 = 15.3 mal schneller, wenn es compiliert wird.
' Es wird ein Port 1.67 Millionen Mal pro Sekunde per TOG-Befehl
' umgeschaltet, es ergibt sich somit eine Rechteckschwingung mit einer
' Frequenz von 833 kHz am Port.

' --- Definitionen ----------------------------------------------------------

INCLUDE "omax.def"         'Definitionen für die Open-Maxi

DEFINE myport PORT[1]      'Bitport definieren

' --- Hauptprogramm ---------------------------------------------------------

myport=ON                  'Port einmalig auf Ausgang schalten

togtest                    'Subroutine aufrufen

END

' --- Subroutinen -----------------------------------------------------------

PROCEDURE togtest COMPILE  'Subroutine mit COMPILE-Schlüsselwort

  WHILE TRUE               'Endlosschleife
    TOG myport             'Port toggeln
  WEND

  RETURN                   'Rücksprung aus der Subroutine

END PROCEDURE

' Die Subroutine wird von OCBASR übersetzt in:

' PROC TOGTEST INLASM
' #ocbasr12 '80
' !lda #1                  '2 TZ \
' !eor PTA                 '3 TZ  \
' !sta PTA                 '3 TZ   > 12 TZ
' #ocbasr14 '3             '      /  ( 20e6 / 12 = 1.67 MHz )
' !jmp ocbasr12            '4 TZ /
' #ocbasr17 '6
' !rts
' END PROC

' --- Programmende ---------------------------------------------------------


Passender Link: Infosite zu den OM-Mikrocontrollern

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

 Antwort schreiben

Bisherige Antworten:

Re: Demoprogramm: Geschwindigkeit von Code, der mit OCBASR kompiliert wurde (von Joachim - 7.03.2020 18:25)
    Re: Demoprogramm: Geschwindigkeit von Code, der mit OCBASR kompiliert wurde (von Dietmar - 7.03.2020 18:43)