skip to main content

kiesler.at

Random Guide to whatever
updated by rck, 2004-10-10

Another case of trying out the swallow hack 0.2. This time, I'm shuffling some sections around. Enjoy!

0 < n < 100

High Performance Alpha Linux: Inline assembler sample code for gcc

Ein relativ langes Posting zum Thema High Performance Computing, in welchem ein umfangreiches Inline-Assemblerprogramm vorgestellt wird. Zeigt im wesentlichen, dass man mit Inline-Assembler nicht nur an Performance gewinnen sondern auch (drastisch) an Übersicht verlieren kann.

Linux-Alpha Archive: wh64 (slow)

Von der Codestruktur wird hier Alpha-Inlineassembler sehr überzeugend dargestellt. Meine Hauptwissensquelle für asma und asmb!

Using the GNU Compiler Collection (GCC): DEC Alpha Options

Hat mir den rechten Weg zu Compilerparametern gewiesen. Stichwort: gcc -mcpu=ev6

Viel Spaß mit Inline-Assembler // René C. Kiesler!

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

1 /*      DatumsCheck.java
2  *
3  *      Demonstation des JAVA StringTokenizer anhand
4  *      einer Datumsprüffunktion. Entspricht im Wesentlichen
5  *      der EPROG-Aufgabenstellung 1064 (nicht ganz).
6  *
7  *      http://www.kiesler.at/
8  *
9  */
10 
11 
12 import java.io.*;
13 import java.util.*;
14 
15 
16 public class DatumsCheck {
17 
18         static String tt, mm, jj;
19 
20 
21         public static void checkLengths()
22                 throws Exception
23         {
24                 if(tt.length()!=2)
25                         throw new Exception("Komponente "+tt+
26                                 " nicht zweistellig!");
27 
28                 if(mm.length()!=2)
29                         throw new Exception("Komponente "+mm+
30                                 " nicht zweistellig!");
31 
32                 if(jj.length()!=2)
33                         throw new Exception("Komponente "+jj+
34                                 " nicht zweistellig!");
35         }
36 
37 
38         public static boolean validJahr(int jahr) {
39                 return( (jahr>0) && (jahr<=99) );
40         }
41 
42         public static boolean validMonat(int monat) {
43                 return( (monat>0) && (monat<=12) );
44         }
45 
46 
47         public static boolean isSchaltjahr(int jahr) {
48                 return( ( (jahr %   4) == 0) &&
49                         ( (jahr % 100) != 0) &&
50                         ( (jahr % 400) != 0) );
51         }
52 
53         public static boolean validTag(int t, int m, int j) {
54 
55                 if((t<1) || (t>31))
56                         return(false);
57 
58                 if(m==2)
59                         if(isSchaltjahr(j))
60                                 return(t<=29);
61                         else
62                                 return(t<=28);
63 
64                 if( (m==4) || (m==6) || (m==9) || (m==11) )
65                         return(t<=30);
66 
67                 return(true);
68         }
69 
70 
71         public static boolean checkRanges()
72                 throws Exception
73         {
74                 int tag=Integer.parseInt(tt);
75                 int monat=Integer.parseInt(mm);
76                 int jahr=Integer.parseInt(jj);
77 
78                 if(     validJahr(jahr) &&
79                         validMonat(monat) &&
80                         validTag(tag, monat, jahr) )
81 
82                         return(true);
83 
84                 else
85                         return(false);
86         }
87 
88 
89 
90         public static boolean check(String s)
91                 throws Exception
92         {
93                 // gewünschtes Format: TT.MM.JJ
94                 
95                 StringTokenizer st=new
96                         StringTokenizer(s, ".");
97 
98                 tt=st.nextToken();
99                 mm=st.nextToken();
100                 jj=st.nextToken();
101 
102                 if(st.hasMoreTokens())
103                         throw new Exception
104                                 ("zuviele Komponenten!");
105 
106                 checkLengths();
107 
108                 if(checkRanges())
109                         return(true);
110                 else
111                         return(false);
112         }
113 
114 
115         public static void main(String args[])
116                 throws Exception
117         {
118                 InputStreamReader ins=new InputStreamReader(System.in);
119                 BufferedReader reader=new BufferedReader(ins);
120 
121                 try {
122 
123                         String eingabe=reader.readLine();
124 
125                         if(check(eingabe))
126                                 System.out.println(eingabe+" ist gültig.");
127                         else
128                                 System.out.println(eingabe+" ist ungültig!");
129 
130                 } catch(Exception e) {
131 
132                         System.err.println("Problem: "+e);
133                 }
134         }
135 }

here you can see some nonsense article. in case it makes sense, it's all fault of Swallow Hack 0.5 for Article Manager!



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004

What's Related

Article Manager

Hacks

Latest Updates

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


Zu den KO2100 Foren