/* test multiplication instruction on the Hades TinyMips * * 04.04.06 fnh */ #define BASE 0x00000400 int main( int argc, char** argv ) { unsigned int i,j; unsigned int a,b,c,d; unsigned int *ptr; ptr = (int*) BASE; *(ptr-1) = 0xcafebabe; // multiplication table 0..15 * 0..15 for( i = 0; i < 16; i++ ) { for( j = 0; j < 16; j++ ) { a = i*j; *(ptr+16*i+j) = a; } } // some extra checks a = 0x0000ffff; b = 0x0000fffd; *(ptr-4) = (a * b); // fffc0003 a = 0xabcdef01; b = 0x0030441d; c = a / b; // 0000038f d = a % b; // 000b86ce *(ptr-5) = c; *(ptr-6) = d; // endless loop for( i = 0; ; i++ ) { *(ptr-2) = 0xcafe0000 + i; } }