code Optimierung bei 32 bit Variablen

OP #979376
hallo,

ich frag mich grade wie man diese zeilen besser hinbekommt?

1
while(!((i==0xfffffff&&fat.fatType==32)||(i==0xffff&&fat.fatType==16))){
2
  i=fat_getNextCluster(i);
3
}

wobei fat.fatType ein unsigned char ist und i ein unsigned long int...
das muss besser gehen oder?
Gast #979660
So allgemein wird man da nicht sagen können. Was für eine Platform? 
8Bit, 32Bit?

Schuss ins blaue: Der Compiler wird das mit Optimierungen schon gescheit 
machen.
OP #979918
hallo,

avr-gcc ist der compiler und die plattform atmega 8 bit.

@ Peter

auf die idee bin ich noch nicht gekommen, das vorher klarzumachen und 
die schleife dann einfach laufen zu lassen...
probier ich gleich mal aus, danke.

weitere vorschläge trozdem willkommen :)
Gast #980034
Du musst Dir noch überlegen ob fatType noch andere Werte als 16 oder 32 
annehmen kann, bzw. was dann passieren soll.

Falls dann als default immer i_max = 0xffff sein soll, würde das 
Programm folgendermassen noch etwas kürzer:
1
if (fatType == 32) 
2
{
3
  i_max = 0xffffffff;
4
}
5
else // alle anderen Werte
6
{
7
  i_max = 0xffff;
8
}
9

10
while(i != i_max)
11
{
12
  i=fat_getNextCluster(i);
13
}
OP #980045
es gibt nur 32 und 16, von daher ist das genau so wie du schreibst ok.
diese prüfung auf 32 oder 16 mache ich dann jetzt nur ein mal bei der 
initialisierung, danach ändert sich ja nix mehr...die schleife 
allerdings hab ich hier und da mehrmals im code, was jetzt schon 
wesentlich kleiner wird. vor allem dann noch so, wenn i lokal und i_max 
global ist:

1
  do{
2
     i=fat_getNextCluster(i);
3
  }while(i!=i_max);

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.