Re: Grad-Zeichen im String Kategorie: Programmierung (von André H. - 21.01.2005 19:05) | ||
Als Antwort auf Re: Grad-Zeichen im String von Peter - 18.01.2005 19:07 | ||
| ||
Hallo Peter, > in eine string-Variable > > GRADC = "xDF"+"C"; > Das Ganze geht aber noch kompakter: "223C" Wenn diese Zeichen jedoch nur auf das LCD ausgegeben werden sollen, ist die Ausgabe über zwei put() schneller, da das aufbauen und Ausgeben des Strings wahrscheinlich länger dauert. Kurz: rblcd.put(0xDF); rblcd.put('C'); Ist meist schneller, als s = "223C"; rblcd.print(s); oder rblcd.print("223C"); Der Grund dafür ist, da� Stringkonstanten (egal ob explizit oder implizit) erst aus Segment 6 bzw. 7 in eine Lokale Variable kopiert werden müssen, und die Adresse dieser Variable dann der ASM-Funktion übergeben wird. Die folgende Zeile sieht als VM-Codes nämlich so aus: str= "testtest"; 131 32 Inc Stack Pointer by 32 134 0 Lade Integerwert 0 auf den Stack 7 Set Global Pointer 98 Clear String (Adresse vom letzen Stackeintrag) 134 0 Lade Integerwert 0 auf den Stack 7 Set Global Pointer 134 5 Lade Integerwert 5 auf den Stack 1378 STRING_PUT_CONST_STRING (kopiere Stringkonstante von Wordaddr. 5 des konstantenspeichers an Adresse 0 der RAMs) 134 20 Lade Integerwert 20 auf den Stack 98 Clear String (Adresse vom letzen Stackeintrag) 134 20 Lade Integerwert 20 auf den Stack 134 0 Lade Integerwert 0 auf den Stack 7 Set Global Pointer 1122 STRING_PUT_STRING Das wären 14 VM-Instruktionen. (und 40 Byte) Jedoch ist es mir ein Rätsel, wofür die letzten 6 VM-Codes gut sind. (Das einzige, was mit in den Sinn kommt, ist, da� die Adresse 0 bei Stingoperationen eine Art Platzhalter für einen globalen Zwischenspeicher darstellt.) Zwei rblcd.put() bzw. lcdext.put() benötigen zusammen jedoch nur 8 Instruktionen. Zudem belegt dies weniger Speicher. (Lediglich einmalig 10 Byte für die Funktion, und 6 Byte pro Aufruf.) Erst ab vier Zeichen würde hier ein String also Sinn machen. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: Grad-Zeichen im String (von Peter - 25.01.2005 11:43) |