-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: A<B oder B>A ?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705

    A<B oder B>A ?

    Anzeige

    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?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    ein > sollte nicht verwendet werden, nur >= oder < (steht hier: http://www.roboternetz.de/wissen/ind...n_Code_erzeugt , habs gestern selbst wieder nachgeschlagen weil ich das immer wieder verwechsel )

    mfg

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Im vorher genannten Link steht folgendes:
    Vermeide a>b, verwende a>=c oder b<a (RISC-Prozessor kennt kein größer als)
    Weiß jemand was der RISC-Prozessor statt "größer als" ausführt?

    Vermeide Bit-Variable
    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.

    Oder bin ich da komplett falsch unterwegs...

    Grüße
    Thomas

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Danke, Netzman!

    Genau diesen Link habe ich gesucht
    Werd´s mir gleich mal irgendwo aufschreiben!

    Gruß,

    Daniel

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von TomEdl
    Hallo!
    Weiß jemand was der RISC-Prozessor statt "größer als" ausführt?
    Die Frage müsste lauten: Weiß jemand, wie Bascom das umsetzt?
    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.

    Zitat Zitat von TomEdl
    Vermeide Bit-Variable

    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.

    Oder bin ich da komplett falsch unterwegs...

    Grüße
    Thomas
    Das macht der Compiler aber so nicht.
    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

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    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???
    ---------------------------------------------------

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    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

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von Tido
    Was nimmt man dann für

    If A <> B then

    etwa

    If not A=B then

    ???
    If A <> B then '9 Cycle
    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

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    A <> B bedeutet jetzt "A nicht B" oder?

  10. #10
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    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).

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •