ein > sollte nicht verwendet werden, nur >= oder < (steht hier: https://www.roboternetz.de/wissen/in...n_Code_erzeugt , habs gestern selbst wieder nachgeschlagen weil ich das immer wieder verwechsel)
mfg
Moin!
Wenn ich zwei Byte-variablen vergleichen möchte, ist es vom Effekt her ja egal ob ich
If A < B then... else...
oder
If B > A then... else...
schreibe.
Ich meine aber hier mal gelesen zu haben, dass eine der beiden Varianten erheblich mehr Code produziert - leider habe ich den Thread trotz intensiver Suche nicht mehr gefunden.
Weiß hierzu jemand etwas genaueres?
ein > sollte nicht verwendet werden, nur >= oder < (steht hier: https://www.roboternetz.de/wissen/in...n_Code_erzeugt , habs gestern selbst wieder nachgeschlagen weil ich das immer wieder verwechsel)
mfg
Hallo!
Im vorher genannten Link steht folgendes:
Weiß jemand was der RISC-Prozessor statt "größer als" ausführt?Vermeide a>b, verwende a>=c oder b<a (RISC-Prozessor kennt kein größer als)
Warum? Wenn ich zum Beispiel fünf Variablen in meinem Programm benötige, die nur den Wert 0 oder 1 beeinhalten, bin ich mit fünf Bit-Variablen sparsamer unterwegs als mit fünf Byte Variablen, weil dann die fünf BIT-Variablen nur 1 Byte Platz im SRAM verbrauchen.Vermeide Bit-Variable
Oder bin ich da komplett falsch unterwegs...
Grüße
Thomas
Danke, Netzman!
Genau diesen Link habe ich gesucht
Werd´s mir gleich mal irgendwo aufschreiben!
Gruß,
Daniel
Die Frage müsste lauten: Weiß jemand, wie Bascom das umsetzt?Zitat von TomEdl
Wenn der µC keinen Befehl dafür hat, kannst du ihm auch keinen schicken, den er dann durch etwas anderes ersetzt. Das muss schon dein Compiler machen.
Das macht der Compiler aber so nicht.Zitat von TomEdl
Legst du z.B. 5 Flags auf die Bits 0-4 einer Byte-Variablen My_flags, dann stimmt deine Vermutung. Für eine Bit-Variable werden tatsächlich 2 Byte im SRAM belegt.
Übrigens wird beim Verarbeiten von Bit-Typen häufig mehr Code erzeugt als mit Byte-Typen.
If A = B Then ...
erfordert z.B. 14 Cycle, wenn A und B Bit-Typen sind. Als Bytes nur 7 Cycle.
Kann man sich im Simulator übrigens sehr schön ansehen.
Gruß
Rolf
Was nimmt man dann für
If A <> B then
etwa
If not A=B then
???
MfG
Tido
---------------------------------------------------
Have you tried turning it off and on again???
---------------------------------------------------
eeeh bin zwar nicht mehr so wirklich im BASCOM-Proggen drin, würd aber auf das tippen:
Code:if a==b then (keine Anweisung) else (tu was) endif
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
If A <> B then '9 CycleZitat von Tido
If A = B then '7 Cycle
Else '3Cycle
C = Not A '9 Cycle
Lohnt alles nicht, <> ist besser, es sei denn, du hast sowieso einen Else-Zweig.
Gruß
Rolf
A <> B bedeutet jetzt "A nicht B" oder?
Für die AVRs sollte es egal sein ob man a>b oder b<a schreibt. Der Prozesor ist zwar RISC, hat aber trotzdem die Vergleich für beide Richtugen. Wenn einer der beiden Fälle anders ist, dann ist das höchstens eine Schwäche der Compilers.
A<>B steht für ungleich, sollte also das gleiche geben wie NOT (A=B).
Lesezeichen