typedef long unsigned int size_t; extern int printf (__const char *__restrict __format, ...); size_t errors = 0; static void check (int thing, int number) { if (!thing) { ++errors; } } int _strcmp(const char *cs, const char *ct) { int __res1, __res2; __asm__ ("1:\t%2 = B[%0++] (Z);\n\t" "%3 = B[%1++] (Z);\n\t" "CC = %2 == %3;\n\t" "if ! cc jump 2f;\n\t" "CC = %2;\n\t" "if cc jump 1b (bp);\n\t" "jump.s 3f;\n" "2:\t%2 = %2 - %3;\n" "3:\n" : "+&a" (cs), "+&a" (ct), "=&d" (__res1), "=&d" (__res2) : : "CC"); return __res1; } void test_strcmp (void) { { char buf1[0x40], buf2[0x40]; int i, j; { { check (_strcmp (buf1+i,buf2+j) > 0, 2); } } } } int main(int argc, char *argv[]) { test_strcmp (); if (errors == 0) { } else { printf("TEST FAIL.\n"); } }