asm{a,b}: spass
[uebersetzerbau-ss10.git] / asma / asma.s
index 9ea72d32ba5a7e8e62c46648c08337ada17bd5be..d2bacedb9fb85fe397711d01446626ff96be90c9 100644 (file)
@@ -1,7 +1,7 @@
        .file   "asma.c"
 
-.section .rodata
-.align 128
+       .data
+       .align 16
 const65:
        .rept 16
        .byte 0x65
@@ -20,15 +20,12 @@ constc0:
        .type   asma, @function
 asma:
 .LFB2:
-       // folgendes kann umgeformt werden:
-       // (mathematisch ned ganz korrekt)
+       // folgendes kann umgeformt werden (max_t = 127)
        // X = 'Z' + 1 + min_t - 'A' > c + min_t - 'A' ? 0xff : 0
-       // X = -102         >  c + 63 ? 0xff : 0
-       // X = c + 63       < -102 ? 0xff : 0
-       // X = -(c + 63)    >  102 ? 0xff : 0
-       // X = -63 - c      >  102 ? 0xff : 0
-       // X = -63 - c - 1  >  102 - 1 ? 0xff : 0
-       // X = -64 - c      >  101 ? 0xff : 0
+       // X =      -c + max_t + 'A' > - 'Z' -1 + max_t + 'A' ? 0xff : 0
+       // X =         -c + 127 + 65 > - 90 - 1 + 127 + 65 ? 0xff : 0
+       // X =               -c - 64 > 101 ? 0xff : 0
+       // X =               -64 - c > 101 ? 0xff : 0
        // ...
        // 101 = 0x65
        // -64 = 0xc0
@@ -47,7 +44,7 @@ asma:
 
        // Y = min(X, 'a' - 'A')
        // mit 'a'-'A'= 97-65 = 32 = 0x20
-       pminub const20, %xmm9
+       pand const20, %xmm9
 
        // c += Y
        paddb %xmm9, %xmm11