Vorrangsregeln für Operatoren

OP #1244909
Lesenswert?
• ▲
▼
Hallo,
1
if byte_value and "1111" & "0000" then 
2
   ... 
3
end if;

sind die Vorrangsregeln klar bei VHDL geregelt oder je nach
Synthesewerkzeug anders?

Die künstliche Trennung in der Konstante x"F0" mache ich
um die einzelnen logischen Bestandteile besser zur Schau zur bringen.
Moderator (Firma: Titel) Persönliche Seite #1244924
Lesenswert?
• ▲
▼
Google?
Mit "vhdl operator priorität" findest du als die ersten beiden Links 
z.B.
http://webpages.eng.wayne.edu/cadence/ECE7530/doc/ch5.pdf
und
http://www.et.fh-trier.de/etechhomepage/team/schindel/downloadbereich/Vorlesungen/VhdlEasy/Kap4/k45.html

> Die künstliche Trennung in der Konstante x"F0" mache ich
> um die einzelnen logischen Bestandteile besser zur Schau zur bringen.
Und bringst dich dadurch selber ins Grübeln?

Aus x"F0" erkenne (zumindest) ich den Wert der Konstante schneller, 
als aus "1111" & "0000". Und wenn ich dann noch über Prioritäten 
nachdenken muß, ist es Essig mit der besseren Lesbarkeit.
Gast #1244942
Lesenswert?
• ▲
▼
Ich kenne mich zwar mit VHDL nicht aus, kann aber behaupten,
dass es für die Lesbarkeit von Programmen immer schlecht ist wenn man
sich auf die Vorrangsregeln bezieht.

Wenn man entsprechende Klammerung setzt ist es besser und ohne 
Missverständnisse lesbar.
Für einen Kompiler sollte es keinen Unterschied machen, ob man etwas 
Klammert oder nicht. Der Binaercode sollte derselbe sein.

Gruss JensM.
Gast #1245041
Lesenswert?
• ▲
▼
Andererseits sind in jeder Programmiersprache die Vorrangregeln klar 
definiert; und sauberen Code zu schreiben heißt nicht, daß den Code auch 
jemand lesen kann, der die betreffende Programmiersprache gar nicht 
kennt.

Ansonsten müßte man so etwas befürworten:
1
i++;   // i um eins erhöhen

Bei Fällen, mit denen ein Programmierer nicht täglich zu tun hat (wie 
verhalten sich in C jetzt nochmal <<, &, ^, && zueinander?) macht es 
aber in der Tat Sinn, ausdrücklich zu klammern. Nur so ganz allgemein 
kann man es nicht stehen lassen.

Was an der künstlichen Trennung übersichtlicher sein soll, versteh ich 
aber auch nicht.
OP #1245600
Lesenswert?
• ▲
▼
>Bei Fällen, mit denen ein Programmierer nicht täglich zu tun hat (wie
>verhalten sich in C jetzt nochmal <<, &, ^, && zueinander?) macht es
>aber in der Tat Sinn, ausdrücklich zu klammern. Nur so ganz allgemein
>kann man es nicht stehen lassen.

eben ganz meine Meinung.
Wenn man viel damit zu tun hat, muss man die Prioritäten wissen, egal
ob man nun tatsächlich klammert oder nicht.
Ausserdem finde ich die "klammere-mal-vorsichtshalber-alles" Mentalität
an den Stellen
1
return (0);
gelinde gesagt foobar :) Verleitet es doch manche zur falschen
Annahme es handele sich um eine return Funktion :)

>Was an der künstlichen Trennung übersichtlicher sein soll, versteh ich
>aber auch nicht.

ganz simpel eigentlich. Es handelt sich um Bitflaggruppen, diese
werden zur besseren Lesbarkeit auch getrennt geschrieben
1
control_reg <= "1" & "111" & "0000";

wenn man selber der Schreiber ist, dann weiss man zB, dass
die erste "1" enable-flag ist, und so weiter.

Grüsse, Daniel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren