Another case of trying out the swallow hack 0.2. This time, I'm shuffling some sections around. Enjoy!
0 < n < 100 | |
---|---|
Die Aussagekraft von Webalizer Auswertungen steht und fällt natürlich mit der Qualität der Logfiles. Wenn im Logfile nicht steht, welche Referrer auf die Homepage zugegriffen haben, wird diese Information auch in der Auswertung unterschlagen. Zumindest bei Apache ist die Abhilfe einfach. |
100 < n < 200 | |
---|---|
1 /* scanner.lex 2 (c) 2004 René C. Kiesler 3 4 please visit http://www.kiesler.at/ 5 for further informations & support. 6 */ 7 8 9 #include <math.h> 10 11 int num_lines = 1; 12 int last_open_sighting = -1; 13 14 15 KEYWORD func|where|end|if|then|else|not|hd|tl|islist|and 16 OPERATOR \:|\;|\,|\=|\-|\+|\*|\<|\(|\) 17 LEXEM {KEYWORD}|{OPERATOR} 18 19 HEXZAHL 0x[0-9a-fA-F]+ 20 DECZAHL [0-9]+ 21 22 IDENTIFIER [a-zA-Z][0-9a-zA-Z]* 23 24 WHITESPACE [ \t]+ 25 COMMENT_START \(\* 26 COMMENT_END \*\) 27 28 NEWLINE \n 29 30 ANYCHAR . 31 32 33 %x COMMENT 34 %% 35 36 37 {COMMENT_START} { BEGIN(COMMENT); 38 last_open_sighting = num_lines; 39 } 40 <COMMENT>{COMMENT_END} BEGIN(INITIAL); 41 <COMMENT><<EOF>> { fprintf(stderr, 42 "unmatched opening comment in line %d, %s\n", 43 last_open_sighting, "eof reached."); 44 exit(1); 45 } 46 <COMMENT>\n num_lines++; 47 <COMMENT>. /* alles im Kommentar ignorieren */ 48 49 {WHITESPACE} /* Whitespace, wird ignoriert */ 50 {NEWLINE} num_lines++; 51 52 {LEXEM} printf("%s\n", yytext); 53 54 {DECZAHL} printf("num 0x%x\n", atoi(yytext)); 55 {HEXZAHL} printf("num 0x%x\n", strtol(yytext, 0, 16)); 56 57 {IDENTIFIER} printf("ident %s\n", yytext); 58 59 {ANYCHAR} { fprintf(stderr, 60 "unknown character '%s' in line %d.\n", 61 yytext, num_lines); 62 exit(1); 63 } 64 65 %% 66 67 68 main(int argc, char **argv) { 69 yyin=argc>1 ? fopen(argv[1], "r") : stdin; 70 yylex(); 71 exit(0); 72 } 73 |
200 < n < 300 | |
---|---|
Sieht im ersten Moment sehr kompliziert aus -- es ist allerdings auch schon heftig optimiert worden darin. 89 - 101 wir haben zwei Register als Operanden. Der Fall ist fast so gut, wie Nummer vier: Lauter Konstanten. Ich habe für nichtvorhandene Register -1 eingesetzt und nicht etwa 0 -- die Nummerierung der Register beginnt ja bei 0 und wir würden dadurch einen der 32 Register nicht ansprechen können. Hier sehen wir gleich eine wichtige Optimierung: Register-Recycling. Handelt es sich bei einem der Register nämlich um einen Arbeitsregister, können wir ihn gleich als Zielregister für die Operation definieren (92 bzw. 95). Praktisch! Wenn nicht: Auch kein Problem, einfach einen neuen aus dem Pool nehmen. 102 - 130 hier das gleiche für nur einen Register. Vermutlich kann man das alles kompakter anschreiben. 130 - 149 im Falle lauter Konstanten braucht man gar keine Operation! Einfach das Ergebnis, wenn es im Rahmen bleibt, als Konstante weitergeben. Sehr effizient, habe ich mir von Peter aka. Risewind aus dem Informatik-Forum abgeschaut. Dankeschön! |
here you can see some nonsense article. in case it makes sense, it's all fault of Swallow Hack 0.5 for Article Manager! |
![]() |
The comments are owned by the poster. We are not responsible for its content. |
AdministrativeTexts
updated by freddiemac1993, 2013-06-14
wiki
Re: adventures
created by brittdavis10, 2012-02-23 (1 rply, 3 views)
thread
Re: how to run phpwebsite...
created by alexander, 2011-08-25 (2 rpls, 3607 views)
thread
Re: Forum tags
created by HaroldFaragher, 2011-08-22 (3 rpls, 8488 views)
thread