Projekt: Pascal-Compiler für AVR

#1293198
Lesenswert?

Hallo,
möchte hier mal mein neues Projekt vorstellen:
ein Pascal Compiler für AVR lauffähig sowohl unter Windows als auch 
unter Linux.

Der Compiler produziert Assembler-Code, der dann mittels avrasm in Hex 
compiliert wird.

Ob der Compiler je fertig wird, steht noch in den Sternen,
aber mittlerweile produziert er schon recht guten Code, so dass man 
schon mal Leds zum leuchten bringen kann.

Zur Zeit werden Globale Byte-Variablen und Konstanten unterstützt,
sowie Proceduren, allerdings noch ohne Übergabeparameter.

Hier der Download für Win & Linux:
http://www.soft-land.de/images/cms/Pheline_Pascal_AVR.zip

Würde mich freuen, wenn ihn mal jemand aus der Linux Gemeinde testet,
bin gespannt, ob er auch auf anderen Systemen läuft.
Unter Linux gibt es noch Probleme mit Kommentaren, warum auch immer,
also Kommentare aus den Beispielen einfach rauslöschen vor dem 
kompilieren.

Grüße
Marco
Angehängte Dateien:
#1293220
Lesenswert?

Ich will ja nicht Deinen Enthusiasmus bremsen, aber kennst Du die 
Compiler von Mikroelektronika (http://www.mikroe.com/en/compilers/)? Die 
haben schon einen Pascal-Compiler fuer den AVR, um $99 wenn Du ihr 
Entwicklungsboard kaufst, sonst $149. Und der unterstuetzt den vollen 
Sprachumfang und kommt ausserdem mit einer umfangreichen 
Funktionsbibliothek - sowas ist privat schwer zu ueberbieten. Allerdings 
laeuft er nur unter Windows, wenn also das der Grund fuer Deine 
Eigenentwicklung ist (oder Du bloss einfach gerne einmal sowas machen 
wills), will ich Dich keinesfalls davon abhalten.

Wolfgang
Gast #1293223
Lesenswert?

Komme gerade aus dem Dunkel der Offtopics und sehe das Licht deines 
Beitrages, mit meiner Leib- und Magensprache PASCAL. Dank dafür. Morgen 
in aller Frühe werde ich deinem Werk auf die Pelle rücken. Gute Nacht.
#1293242
Lesenswert?

Hallo,
ich kenne den Compiler von mikroe, hab eine Vollversion, und genau das 
ist der Punkt!

Wer mit dem Microe-Compiler schon ein größeres Projekt auf die Beine 
gestellt hat, weiß was ich meine: Zuviele Bugs, mieser Support,
über 1 Jahr kein Update, trotz zahlreicher gemeldeter Bugs, siehe 
Mikroe-Forum, aber darum gehts ja hier nicht, es juckt mir schon ewig in 
den Fingern, mich mal an einem Compiler zu versuchen und kein Projekt 
hat bisher soviel Spaß gemacht, wie dieses :-)

Marco
#1293251
Lesenswert?

Schönes Projekt! Gerade als Bastler oder Student lohnt es sich auch mal 
das Rad neu zu erfinden. Man lernt ne unheimliche Menge dabei und am 
Ende entsteht dann vielleicht sogar etwas, was das vorhandene 
übertrifft.

Früher habe ich sehr gerne mit PASCAL programmiert, heute nutze ich 
jedoch öfter C und C++.

Ich wünsche Dir viel Erfolg, vielleicht findest du ja auch ein paar 
Mitstreiter :)
Gast #1293258
Lesenswert?

Hi

Nach Assembler wäre Pascal auch meine erste Wahl (für AVR). War aber 
bisher noch nicht notwendig. Auf dem PC benutze ich sowieso Delphi.
Allerdings hast du dir ganz schön was vorgenommen. Aber selbst wenn es 
nicht fertig wird (was ich dir nicht wünsche, aber so ein Projekt habe 
ich auch), kannst du nur dazu lernen.
Lass dir das hier nicht kleinreden.

MfG Spess
Gast #1293272
Lesenswert?

Ich hab auch schon mal an so ein Projekt gedacht. Aber bis es dann auf 
einem tauglichen Stand ist braucht es einiges an Einsatz. Der Pascal 
compiler, den ich hab, hat ein Schwergewicht auf nichtoeffentlichen 
Treibern zu irgendwelchen Einheiten, die ich allerdings mangels 
Quellcode nicht gebrauche. Ich haett lieber einen besser optimierenden 
Compiler als Treiber bis zum Abwinken. Die kann ich selber schreiben. 
Ein Compiler soll mir Arbeit abnehmen, und da sind die Erwartungen 
speziell bei fehlendem Standard etwas erhoeht gegenueber C.
#1293300
Lesenswert?

@aha:
Das ist es auch, was mich am mikroe-Compiler so genervt hat, manchmal 
habe ich stundenlang nach Fehlern gesucht, bis ich dann festgestellt 
habe, dass
es an einer mikroe-lib lag, die ebenfalls nicht Open-Source sind, so 
dass man
den Fehler nichtmal selbst beheben kann.

@Rudolf:
Ich glaube es ist einfacher den Code in Assembler oder gleich in Hex 
auszugeben, als in C. Ausserdem würden mich warscheinlich sowohl die C 
Anhänger als auch die Pascal-Gemeinde dafür lynchen ;-)lol
Gast #1293315
Lesenswert?

Hi

>1) Pascal-to-C converter

>  Also Pascal-source nach C/C++ konvertieren und dann mit gcc-avr
>fertigstellen (lassen).

Ich halte Pascal als durchweg gleichwertige Sprache zu C. Also wozu?

MfG Spess
#1293323
Lesenswert?

Naja, schaut so aus als ob Du weisst, was Du tust. Ich selber habe mit 
Mikroelektronika eigentlich recht gute Erfahrungen gemacht (allerdings 
mit MikroC fuer Microchip PIC), vor allem der Kundensupport was bisher 
immer schnell und hilfreich (die MikroE-Leute haben zweimal fuer mich 
ein kleines Programm innerhalb von 48 Stunden zum Laufen gebracht). 
Wegen Fehler in der Library - ja, sowas ist sehr aergerlich; allerdings 
zwingt Dich niemand, die eingbauten Libs zu verwenden, Du kannst ja 
immer Deine eigenen Funktionen schreiben. Beim Eigenbau-Compiler ist das 
aber nicht "kann", sondern "muss" - ich persoenlich stecke meine Zeit 
eben lieber in mein Elektronikprojekt, anstatt das Rad (sprich Library) 
neu zu erfinden, aber das ist wohl Geschmackssache :-)

Wolfgang
Gast #1293327
Lesenswert?

>Also Pascal-source nach C/C++ konvertieren...

Ein Witz - spuelen. Ein Pascal kompiler kann zb das EEPROM und Code 
gleich wie RAM behandeln. zB

.CSEG
const ....

.DSEG
var ....

.ESEG
var ....

Waehrend C auf Funktionsaufrufen zum Lesen und Schreiben besteht. Man 
sollte sich im klaren sein, dass C ein Makroassembler ist, und bei einer 
abstrakteren Spache mehr drinliegt.
#1293391
Lesenswert?

aha schrieb:

> Waehrend C auf Funktionsaufrufen zum Lesen und Schreiben besteht.

C besteht mitnichten darauf.
Und wohin das führt, wenn man versucht, diese Unterscheidung dem 
Compiler zu überlassen, sieht man oft genug beim IAR Compiler.

Auch ein Pascal Compiler kann keinen Code (ohne Speicherverschwendung) 
generieren, bei dem das Compilat einem Pointer ansehen kann, ob das nun 
eine Adresse im Flash, im EEPROM oder im SRAM ist.

Da ist mir ehrlich gesagt, die avr-gcc Lösung noch die liebste. Der 
Compiler gaukelt mir da nichts vor, sondern sagt klipp und klar: Wo 
welche Variable liegt, darum musst du dich beim Zugriff selber kümmern.
Gast #1293394
Lesenswert?

@marco

drück dir die daumen bei deinem projekt. ich versuch mich schon seit 
jahren an einem compiler (gebs aber immer wieder auf ;-))

viel erfolg. werd mir deinen quellcode mal zu gemüte führen.
Gast #1293440
Lesenswert?

>Auch ein Pascal Compiler kann keinen Code (ohne Speicherverschwendung)
>generieren, bei dem das Compilat einem Pointer ansehen kann, ob das nun
>eine Adresse im Flash, im EEPROM oder im SRAM ist.

Aber natuerlich weiss der compiler wo eine Variable ist. Ich kann eine 
Variable ja als im EEPROM deklarieren. Es ist dann in meinem Interesse
eine Zuweisung an eine EEProm Variable nicht alle Sekunden 
durchzufuehren.

Der AVRCo Compiler kann das zum Beispiel. Weshalb soll ich mich um einen 
zugriffsprozedur kuemmern muessen ? Dasselbe mit Flash. Weshalb sollte 
ich mich um die Details eines LPM kuemmern muessen?
(Firma: Q3) #1293444
Lesenswert?

>Hallo,
>möchte hier mal mein neues Projekt vorstellen:
>ein Pascal Compiler für AVR lauffähig sowohl unter Windows als auch
>unter Linux.

Vielleicht kannst du dein Projekt auf Mac OS X erweitern, oder ist das 
Nichts für "harte Jungs"? Ich denke, Darwin hat viele Gemeinsamkeiten 
mit Linux.

Frank
Gast #1293470
Lesenswert?

aha schrieb:
>>Auch ein Pascal Compiler kann keinen Code (ohne Speicherverschwendung)
>>generieren, bei dem das Compilat einem Pointer ansehen kann, ob das nun
>>eine Adresse im Flash, im EEPROM oder im SRAM ist.
> Aber natuerlich weiss der compiler wo eine Variable ist.

Er schrieb "das Compilat", nicht "der Compiler". Ein wesentlicher 
Unterschied. Zeig doch mal das Compilat von einem einfachen memory copy, 
bei dem die Quelle in jedem Speichertyp liegen kann.
Gast #1293566
Lesenswert?

Ich freue mich sehr über Deinen Pascal-Kompiler. Grund: Pascal-Quelltext
ist wesentlich einfacher zu handhaben als Quelltext in C mit Tilden
und Ausrufezeichen und weiß der Teufel was noch.

Es kann aber auch sein, daß ich das nur so mistig empfinde, weil ich
aus der ALGOL-Ecke komme.

MfG Paul
Moderator Persönliche Seite #1293701
Lesenswert?

Martin schrieb:
> Es wäre schön, wenn der Thread in der Codesammlung eine neue Heimat
> findet. Hier wird er sonst mit Randthemen zugepostet.

Da er das inzwischen aber schon ist, wäre es sinnvoller, wenn der
OP das gleich nochmal in der Codesammlung postet.  Dann kann dieser
Thread hier das weiter machen, was er nun ohnehin schon tut:
alternative Pascal-Implementierungen für den AVR diskutieren.
Gast #1293823
Lesenswert?

>Er schrieb "das Compilat", nicht "der Compiler". Ein wesentlicher
>Unterschied. Zeig doch mal das Compilat von einem einfachen memory copy,
>bei dem die Quelle in jedem Speichertyp liegen kann.

Wenn ich auf das EEProm schreibe :  MyEEPromVar:=Somevar
Dann muss da natuerlich die Geschichte mit dem Wait(EEPromReady) EEProm- 
Enable, EEDR=data usw ablaufen. Und wenn man einen String vom Flash 
liest die LPM Geschichte mit indexregister usw.

Falls das jeweils nur einmal in der Applikation geschieht, dann bitte 
gleich den Code da einfuellen, sonst auf eine (Library-)Prozedur legen 
und aufrufen.
Wo ist das Problem ? Da alle Datentypen deklariert sind weiss der 
Compiler welcher Art der gemeinte Speicher ist.
Gast #1294236
Lesenswert?

Hi Marco Bajerski,

könnte was beisteuern.

Einen Formel-Parser ala:
r16 = r20 or (20 * and (r17 xor r18) + r19)

Habs bis jetzt in Basic implementiert, geht aber
auch bestimmt im Pascal.

Das Projekt ist toll, aber alleine?

meld Dich mal Z8.
#1294277
Lesenswert?

Hi,
wieso nicht alleine, bin doch schon recht weit allein gekommen...
Unter dem Formelparser kann ich mir grad nichts so recht vorstellen,
in wie fern hast du das in Basic implementiert?

Ich habe den Compiler in 3 Module aufgeteilt (ala N.Wirth): Scanner, 
Parser und Codegenerator, so kann ich ihn ohne weiteres für andere 
Sprachen wie zB Basic verwenden, oder auch für eine andere Architektur.

Gruß
Marco
#1294329
Lesenswert?

Wiso schreibst du nicht mal den Florean vom FPC an ?
Der AVR Support ist zu 90% schon da.
Ich hatte vor ca nem Jahr mal mit ihm drüber gesprochen und er meinte 
das meisste sei wohl noch Tests zu implementieren (avr simulator) u.s.w. 
Und dann natürlich Registerkonstanten u.s.w. also Bibliothekskram.
Gast #1294962
Lesenswert?

Ich will das Projekt nicht schlechtreden. Ich weiß auch, das es Spass 
macht einfach mal selbst einen Compiler für sich zu bauen, obwohl es 
schon freie Pascal-Compiler gibt. Aber wenn der Compiler von anderen 
eingesetzt werden soll, dann ist es vielleicht doch besser, auf etwas 
bestehenden aufzusetzen. Man unterschätzt als Einzelperson schnell den 
riesigen Aufwand, der hinter einem gut funktionierenden, gut wartbaren, 
gut getesteten, portablen und optimierenden Compiler steckt.

Meine Meinung: als Privatprojekt super, wenn es professionell werden 
soll (also das andere das auch produktiv einsetzen), dann würde ich 
lieber das GPC frontend an den avr-gcc anpassen, falls überhaupt etwas 
angepasst werden muss.
Gast #1294985
Lesenswert?

>Ich weiß auch, das es Spass macht einfach mal selbst einen Compiler für >sich zu 
bauen, obwohl es schon freie Pascal-Compiler gibt. Aber wenn der >Compiler von 
anderen eingesetzt werden soll, dann ist es vielleicht doch >besser, auf etwas 
bestehenden aufzusetzen.

Ich glaube Visual Basic muss wohl auf diese Weise entstanden sein.

10 GOTO 10
Gast #1297174
Lesenswert?

>> Eine Doku gibts natürlich nicht, so lange der Compiler nicht ansatzweise >> 
fertig ist.

Noch nicht einmal "ansatzweise" fertig! Vielen Dank für deine Warnung, 
denn als prealpha Tester bin ich mir zu schade.
Gast #1297433
Lesenswert?

>Ich habe den Compiler in 3 Module aufgeteilt (ala N.Wirth): Scanner,
>Parser und Codegenerator,

Warum dann nicht gleich Oberon? Für irgendeinen uC hatte Wirth da ja 
schon viel gemacht (war es Arm?).
Gast #1297461
Lesenswert?

>Weil Oberon sich nie durchgesetzt hat, obwohl es im Prinzip ein besseres
>Pascal ist.

Na wenn Du eh an einem eigenen Compiler arbeitest ist doch dann Oberon 
besser. Oder soll bestehender Pascal Quelltext von Deinem Pascal 
Compiler verarbeitet werden? Wohl eher nicht.

Wirth hatte doch dieses Helikopter-Projekt gemacht.
Gast #1297503
Lesenswert?

Autor: A. K. (prx)
Datum: 13.06.2009 19:21

Ja sicher. Hier ging es um Oberon für uC.

Ursprünglich hatte Wirth natürlich Modula und dann Oberon als Nachfolger 
für Pascal für richtige Desktop-Maschinen entwickelt. Erst für 
spezielle, vorwiegend ETH-intern genutzte Maschinen, später dann auf 
normale PCs portiert. Wobei Oberon ja nicht nur die Sprache, sondern 
auch das zugehörige Betriebssystem bezeichnet. Da Oberon eine recht 
kompakte Sprache ist, ist es natürlich auch für uC recht gut geeignet. 
Aber Wirths Helikoper-Projekt kam eben recht spät.
#1297546
Lesenswert?

> Na wenn Du eh an einem eigenen Compiler arbeitest ist doch dann Oberon
> besser. Oder soll bestehender Pascal Quelltext von Deinem Pascal
> Compiler verarbeitet werden? Wohl eher nicht.

Doch!
Beitrag "Re: Projekt: Pascal-Compiler für AVR"

Es wird ein Pascal Compiler, und außerdem habe ich oben ja schon 
erwähnt, dass der Compiler später ohne weiteres auch für andere Sprachen 
portiert werden kann.
Gast #1297616
Lesenswert?

Ja. Pascal ist eine gute Wahl. Modula2 und Oberon sind beide etwas 
akademisch. Zum Pascal. Wie werden hier nun zwei Variablen aufeinander 
gelegt ? Bei Turbopascal gab's das "absolute" statement.

Var
 u:word;
 b:array[1..2]of byte; absolute u;
 h:string(32);
 buf:array[1..32]of byte; absolute h;

Ein anderes Pascal, das ich kenn macht's so.

var
 u:word;
 blo[@u]:byte;
 bhi[@u+1]:byte;
 h:string(32);
 buf[@h]:array[1..32]of byte;


Etwas Aehnliches ist vorstellbar, die Funktionalitaet aber ein absolutes 
Muss.
Gast #1297627
Lesenswert?

aha schrieb:
> Etwas Aehnliches ist vorstellbar, die Funktionalitaet aber ein absolutes
> Muss.

Wenn man das ganze so umsetzt, dass man auch feste Adressen angeben 
kann, hätte man den ganzen SFR-Krimskrams quasi auch gleich erschlagen.
#1297639
Lesenswert?

Wenn den I/O-Ports nicht schon im Compiler feste Adressen zugewiesen 
werden, sondern erst der Linker weiss wo die liegen, dann kann der 
Compiler auch keine adressabhängigen Optimierungen veranstalten. Bei 
AVRs nicht ganz unwichtig.

Und ohne Peudovariablen für I/O muss man mit Zugriffsfunktionen 
arbeiten, was auch nicht unbedingt ein Quell steter Freude ist.
#1297658
Lesenswert?

aha schrieb:
> Ja. Pascal ist eine gute Wahl. Modula2 und Oberon sind beide etwas
> akademisch. Zum Pascal. Wie werden hier nun zwei Variablen aufeinander
> gelegt ? Bei Turbopascal gab's das "absolute" statement.

In der deklaration garnicht,
ich dachte da eher an Funktionen wie z.B
x := 0x00FF;
tmp  := LOW(x);
tmp2 := HIGH(x);
Gast #1297677
Lesenswert?

>ich dachte da eher an Funktionen wie z.B
>x := 0x00FF;
>tmp  := LOW(x);
>tmp2 := HIGH(x);

Das sind eh benoetigte standardfunktionen. Wie schaut's denn da mit 
einer Zuweisung aus : zB High(x):=5;
Manchmal muss man aber auch die Bytes eines Longword zugreifen koennen. 
Oder einen string ueber das Uart rausblasen, usw.
#1297679
Lesenswert?

aha schrieb:

> Zum Pascal. Wie werden hier nun zwei Variablen aufeinander
> gelegt ? Bei Turbopascal gab's das "absolute" statement.

Eigentlich läuft sowas über RECORD CASE ...

Allerdings sollte man sich solche Konstruktionen schon aus Erfurcht vor 
Wirth höflichst verkneifen, denn mit dem Ansatz, Typkonvertierung oder 
Bytezerlegung mit Überlagerung von Variablen abzuwickeln, ziehst du 
garantiert sämtliche Flüche auf dich zu denen er fähig ist.
Gast #1297684
Lesenswert?

Man muss dem Compiler natuerlich ein Config-file fuer die SFR 
unterschieben koennen. Dort steht was wo ist, und welche Moeglichkeiten 
die Adressen haben. Und fuer die SFR muessen dann Bit Manipulationen 
moeglich sein, und zwar so, dass der Copiler das schon richtig macht.
Gast #1297689
Lesenswert?

Also mit den Fluechen von Wirth koennen wir leben. Wir sind pragmatisch, 
nicht akademisch. Weshalb soll ich eine Record case definition machen, 
um schnell was anders herum zuzugreifen ? Das genannte "Absolute" 
funktioniert natuerlich auch auf Variablen, die lokal zu einer Prozedur 
sind.
#1297717
Lesenswert?

pfft. schrieb:
>>ich dachte da eher an Funktionen wie z.B
>>x := 0x00FF;
>>tmp  := LOW(x);
>>tmp2 := HIGH(x);
>
> Das sind eh benoetigte standardfunktionen. Wie schaut's denn da mit
> einer Zuweisung aus : zB High(x):=5;
> Manchmal muss man aber auch die Bytes eines Longword zugreifen koennen.
> Oder einen string ueber das Uart rausblasen, usw.

Mit @x bekommst du einen Pointer zu x, aber alles zu seiner Zeit.
#1297727
Lesenswert?

pfft. schrieb:

> Also mit den Fluechen von Wirth koennen wir leben. Wir sind pragmatisch,
> nicht akademisch. Weshalb soll ich eine Record case definition machen,
> um schnell was anders herum zuzugreifen ?

Mein Fokus geht über AVR hinaus. Auch wenn es sich in diesem Fall um 
einen einfachen Compiler genau nur für AVR handelt, lehne ich solche 
unsaubere Konstrukte in einer eigentlich sauberen Sprache dennoch ab.

Kennst du das Aliasing-Problem in C/C++? Oder das Problem, das bei 
Caches auftritt, wenn man mit verschiedenen Adressen und Grössen auf die 
gleichen Daten zugreift? Ist ebenso wie Fragen zum memory ordering die 
gleiche Baustelle wie dieses "absolute", auch wenn das einen einfachen 
Compiler für AVR nicht betrifft. Und daher sind solche Ansätze für mich 
unsauber. Ich weiss zu viel über die Konsequenzen, die sowas haben kann, 
um es als elegant zu betrachten.

Akademisch ist das m.E. eher nicht, weil es in anderem Kontext als AVR 
durchaus von Bedeutung sein kann wie man so etwas löst. Und wenn man den 
Compiler als Frontend vor einen Compiler wie GCC setzt, dann kann man 
u.U. auch bei AVRs Überrschungen erleben.

Daher: Wenn man Variablen in anderer Weise verwendet als deklariert, 
dann sollte das an der Stelle wo dies geschieht deutlich erkennbar sein.

Alternativ käme in Frage, alle Variablen, die irgendwie überlagert 
werden könnten, an Ort und Stelle entsprechend zu kennzeichnen. Im 
obigen Beispiel also nicht nur "buf" sondern auch "h".
Gast #1297748
Lesenswert?

Unsauber ?

Der eine Standardansatz waere pointer :

Type
 lwptr=^longword;
 qbytearray=array[1..4]of byte;
 baptr=^qbytearray;

var
 lw:longword;
 lp:lwptr;
 bap:baptr;

code
 lp:=@lw;
 bap*:=lp;

und endlich :
 bap[1]:=1;
 bap[2]:=2;
 bap[3]:=3;
 bap[4]:=4;

der andere Standardansatz ueber einen Record

type
 myrec=record
  case x
   a:longword;
   b:array[1..4]of byte;
  end;
 end;

Beides sehr unstaendlich und aeusserst muehsam. Dann kann man gleich bei 
C bleiben, sorry.
Die Staerke von Pascal, wie ich's kenn, ist ein pragmatischer, eleganter 
Ansatz bei dem man sofort den Ueberblick hat und behaelt. Das hat Wirth 
leider nicht drauf gehabt, deshalb wurd's auch nichts.
#1297761
Lesenswert?

Eine Stärke wäre es, den Mist den man in C machen kann, in Pascal eben 
nicht zu machen.

Ich will versuchen, eines der Probleme zu illustrieren, nämlich das mit 
dem Aliasing:

Wenn eine Funktion mehrere VAR Parameter verschiedenen Typs hat, dann 
weiss ein Compiler einer Sprache ohne Möglichkeit der Überlagerung, dass 
diese sich nicht überlappen können. Dass also die Zuweisung an die eine 
Variable den Wert der anderen nicht ändert.

Erlaubt die Sprache Überlagerung, dann muss ein Compiler davon ausgehen, 
dass alle solchen Parameter in Wirklichkeit identisch sein können. Das 
hat fundamentale Konsequenzen für Optimierung.

Analog dazu wäre eine Zuweisung über einen Pointers zunächst das Ende 
jeder Zugriffsoptimierung auf viele Variablen, weil der Compiler nicht 
einmal bei typfremden Variablen sicher sein kann, dass sie nicht mit dem 
Ziel des Pointers überlappen.

Auch ein RECORD CASE löst dieses Problem nicht ganz. Zu lösen ist das 
beispielsweise, indem sichergestellt wird, dass Variablen, die sich 
überlappen können, nur direkt aber nicht in Form einer Adresse verwendet 
werden, also auch nicht als Argument eines VAR Parameters. Ist eine 
indirekte Verarbeitung nicht zugelassen, dann kann ein Compiler bei 
Daten innerhalb eines RECORD CASE auf Zugriffsoptimierung verzichten um 
dem Problem zu entgehen.

Dass diese Problem bei ziemlich alten Compilern nicht auftritt, liegt an 
der dort fehlenden Optimierung.
Persönliche Seite #1297762
Lesenswert?

Das ist doch alles Anwendersache. Oder?

...oder gibt's nichtmal nen Pascal-Standard, der Syntax und Semantik der 
Sprache festlegt? Meine Pascal-Zeiten sint etwas her, mit war die 
Sprache zu sperrig. Und ohne Spezifikation ist ne Sprache doch recht 
witzlos, da kocht dann eh jeder sein eigenes Süppchen und Portabilität 
und Allgemeinheit interessieren nicht die Bohne. Jedes Gadget, das 
gerade gut zur Hand steht, wird eingebaut weil's so hüppsch ist und so 
chic und ein paar Buchstabentippsler spart...

Johann
#1297765
Lesenswert?

Johann L. schrieb:
>
> witzlos, da kocht dann eh jeder sein eigenes Süppchen und Portabilität
> und Allgemeinheit interessieren nicht die Bohne. Jedes Gadget, das
> gerade gut zur Hand steht, wird eingebaut weil's so hüppsch ist und so
> chic und ein paar Buchstabentippsler spart...

Genau so ist es. Wenn der Compiler ein Exot ist und bleibt, also eine 
Privatsprache für ein paar Programmierer bleibt, dann ist das völlig 
egal.

Aber wehe das Ding zieht Kreise und wird beliebt. Auf solche Art haben 
sich Intel wie Microsoft schon etliche Entwicklerflüche eingehandelt. 
Der Art "wie konnten die nur so kurzsichtig sein".
#1297772
Lesenswert?

Kleines Beispiel wie solche Aliasing-Probleme an den überrschendsten 
Stellen auftauchen und für Ärger sorgen:

Als Intel anno 286 definierte, dass der Reload eines Segmentregisters 
zwingend den Descriptor aus dem Speicher nachläd, auch wenn's das 
gleiche Handle ist, da war das noch kein Problem.

Als sie dann beim PentiumPro angekommen waren, da machte u.A. diese 
Definition diesen Prozessor für Win95 ziemlich untauglich. Und so 
mussten sie im Pentium-II zur Optimierung von Segmentregistern nur wegen 
dieser Kurzsichtigkeit eine komplexe Snooping-Logik einbauen, die alle 
Schreibzugriffe daraufhin abklopft, ob sie zufällig auf einen geladenen 
Descriptor gehen.

Hätte Intel anno 286 einen entsprechenden Invalidate-Befehl definiert, 
anfangs als NOP implementiert, wäre das Thema ohne jeden Aufwand für 
alle Zeit erledigt gewesen.
Gast #1775992
Lesenswert?

Es ist natürlich eine gute Herausforderung und mächtiger Spaß einen 
Pascal-Compiler zu entwickeln. Als Anwender von Programmiersprachen für 
Mikrocontroller ist mir aber schon Heute das Vorhandensein von 
Assembler, C und Basic ein Dorn im Auge.
Verschiedene Sprachen teilen die Menschen und so macht jede weitere 
Sprache die Sache nur noch schlimmer. Wie soll man den als 
Pascal-Programmierer für AVR in einem Forum Hilfe bekommen? Schon 
Basic-Leute haben es sehr schwer, Gleichgesinnte zum Erfahrungsaustausch 
zu finden.
(Firma: Embedit Mikrocontrollertechnik) #1776027
Lesenswert?

Sicher, es wäre einfacher, wenn alle in Assembler programmieren. Dann 
bräuchte man alles nur einmal zu machen. Alles wäre zu 100% 
ausgearbeitet

Aber das Leben wäre doch langweilig ohne Vielfalt? Nicht jeder möchte 
Assembler programmieren. Assembler ist nicht unbedingt für jede Aufgabe 
geeignet.

Das gleiche könnte man über C schreiben
#1776100
Lesenswert?

>Verschiedene Sprachen teilen die Menschen und so macht jede weitere
>Sprache die Sache nur noch schlimmer. Wie soll man den als
>Pascal-Programmierer für AVR in einem Forum Hilfe bekommen? Schon
>Basic-Leute haben es sehr schwer, Gleichgesinnte zum Erfahrungsaustausch
>zu finden.

Ziemlicher Quatsch, fast das gesamte Roboternetz besteht aus basic was 
eines der größten AVR Foren ist. Auch wenn ich kein Basic Freund bin, 
aber blind nicht.

Und problematisch sind die Sprachunterschiede nicht, Registernamen sind 
überall gleich Datenblätter haben also die selbe Auswirkung und eine 
schöne Hochsprache wie Pascal kann einem die Arbeit schon sehr 
erleichtern.

>Weiß jemand, was aus dem AVR Port von Free Pascal geworden ist?

Nicht viel bisher fürchte ich, er kann Code erzeugen aber das wars im 
weitesten sinne auch, Florian steckt da nicht zu viel Aufmerksamkeit 
hinein. Ich denke wenn sich 2-3 Leute finden würden die etwas helfen und 
ihn nerven würd man da in 2-3 Monaten was vernünftiges hinbekommen ich 
schließ mich da nicht aus wär auch froh über den Port man muss sich halt 
nur immer die Zeit abzwacken.

lg
Christian
#1776504
Lesenswert?

Mahlzeit,
der Compiler ist immer noch in Arbeit und nicht in Vergessenheit 
geraten, aber wegen Familienzuwachs bleibt im Moment nicht soviel Zeit, 
aber gegegentlich arbeite ich dran.
Wie Herbert K. bereits bemerkt hat, leidet auch die Website darunter.

Zwischenzeitlich sind ein Assembler und ein Simulator für eine kleine 
eigene 32 Bit Architektur enstanden, lauffähig auf einem CPLD / FPGA,
diese soll ebenfalls vom Pascal Compiler unterstützt werden.

Grüße
Marco
#1776544
Lesenswert?

Hallo Klaus,

was vielleicht Du + andere nicht wissen: Das Projekt ist ja entstanden, 
weil seinerzeit der mikroPascal Compiler von mikroe so einige Macken 
hatte, und man damit kein wirkliches Projekt realisieren konnte.
( Marco möge mich bitte korrigieren, wenn das nicht so war )
Mit der aktuellen Version kann man arbeiten und (vielleicht habe ich ja 
nur Glück gehabt [Lib.Fehler war in 2 Tagen ok]) kümmern Sie sich auch 
um Fehler.

Viele Grüße Herbert
Gast #1776553
Lesenswert?

Hallo Herbert,

der AvrCo-Compiler hat auch die ein oder andere Macke. Die 
Funktionsbibliothek ist allerdings recht umfangreich. Der System 
beherrscht auch Multitasking. Den Compiler für eine Atmega8 und Atmega88 
gibt es umsonst.
Ich wollte AvrCo nur der Vollständigkeit halber erwähnen.

Gruß,
Klaus
(Firma: Embedit Mikrocontrollertechnik) #1776669
Lesenswert?

Der AVRco kostet halt Geld, wenn man mehr als Mega8/88 will und ist 
Windows only, genauso wie das Zeug von Mikroe. Für Linux User gibt es 
quasi nix außer dem avr-gcc

Marco Bajerski schrieb:
> der Compiler ist immer noch in Arbeit und nicht in Vergessenheit
> geraten, aber wegen Familienzuwachs bleibt im Moment nicht soviel Zeit,
> aber gegegentlich arbeite ich dran.

Ich habe zwar auch eigentlich keine Zeit, aber ein wenig Hilfe möchte 
ich anbieten.
Gast #2714174
Lesenswert?

Hallo Marco,
seit zwei Jahren hat sich hier nichts mehr getan???
Ich wollte mal diese Diskussion wieder erwecken.
Gibt es was Neues zu berichten?
Interessiert bin ich nähmlich immer noch.

Wie ist der Stand mit dem Nachwuchs?? ;-)

Ist die Entwicklung des Pascal-Compiler weitergegangen?
.
.
.
.

Holger
Beitrag #5173741 wurde von einem Moderator gelöscht.
Beitrag #5173994 wurde von einem Moderator gelöscht.
Beitrag #5174149 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.