Horse and saddle to that guy who find what is wrong in below code:
unsigned int oct2int(const char* oct){ 
unsigned int ret = 0; 
int i,j=0,k,length = strlen(oct); 
 
    for(i=length-1;i >= 0;i--){ 
        if((k=(oct[i]-'0')) > 0)    ret += 1<<(3*j) * k;//8 = 2^3 
        j++; 
    } 
return ret; 
} 
Compiler doesn't report error. However code is not working as expected
To my supprise the code disables interrupts for ever.
So the example should look like:
unsigned int oct2int(const char* oct){ 
unsigned int ret = 0; 
int i,j=0,k,length = strlen(oct); 
 
    for(i=length-1;i >= 0;i--){ 
        if((k=(oct[i]-'0')) > 0)    ret += 1<<(3*j) * k;//8 = 2^3 
        j++; 
        asm("eint");
    } 

return ret; 
} 
Who was so smart !!!

Explanation below ( from assembly):


unsigned int oct2int(const char* oct){
    8c42:       0b 12           push    r11             ;
    8c44:       0a 12           push    r10             ;
    8c46:       09 12           push    r9              ;
    8c48:       08 12           push    r8              ;
    8c4a:       0c 4f           mov     r15,    r12     ;
unsigned int ret = 0;
    8c4c:       0b 43           clr     r11             ;
int i,j=0,k,length = strlen(oct);
    8c4e:       0a 43           clr     r10             ;
    8c50:       1f 83           dec     r15             ;
    8c52:       1f 53           inc     r15             ;
    8c54:       cf 93 00 00     cmp.b   #0,     0(r15)  ;r3 As==00
    8c58:       fc 23           jnz     $-6             ;abs 0x8c52
    8c5a:       09 4f           mov     r15,    r9      ;
    8c5c:       09 8c           sub     r12,    r9      ;

    for(i=length-1;i >= 0;i--){
    8c5e:       0d 49           mov     r9,     r13     ;
    8c60:       3d 53           add     #-1,    r13     ;r3 As==11
    8c62:       e7 38           jl      $+464           ;abs 0x8e32
    8c64:       18 43           mov     #1,     r8      ;r3 As==01
    8c66:       0f 4d           mov     r13,    r15     ;
    8c68:       3f e3           inv     r15             ;
    8c6a:       0e 4f           mov     r15,    r14     ;
    8c6c:       3e f0 03 00     and     #3,     r14     ;#0x0003
    8c70:       0f 49           mov     r9,     r15     ;
    8c72:       2f 83           decd    r15             ;
    8c74:       42 38           jl      $+134           ;abs 0x8cfa
    8c76:       0e 93           cmp     #0,     r14     ;r3 As==00
    8c78:       5f 24           jz      $+192           ;abs 0x8d38
    8c7a:       3e 90 03 00     cmp     #3,     r14     ;#0x0003
    8c7e:       3d 34           jge     $+124           ;abs 0x8cfa
    8c80:       2e 93           cmp     #2,     r14     ;r3 As==10
    8c82:       1d 34           jge     $+60            ;abs 0x8cbe
        if((k=(oct[i]-'0')) > 0)    ret += 1<<(3*j) * k;//8 = 2^3
    8c84:       0f 4c           mov     r12,    r15     ;
    8c86:       0f 5d           add     r13,    r15     ;
    8c88:       6f 4f           mov.b   @r15,   r15     ;
    8c8a:       8f 11           sxt     r15             ;
    8c8c:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8c90:       1f 93           cmp     #1,     r15     ;r3 As==01
    8c92:       13 38           jl      $+40            ;abs 0x8cba
    8c94:       02 12           push    r2              ;
    8c96:       32 c2           dint
    8c98:       03 43           nop
    8c9a:       82 4b 32 01     mov     r11,    &0x0132 ;
    8c9e:       82 4f 38 01     mov     r15,    &0x0138 ;
    8ca2:       1e 42 3a 01     mov     &0x013a,r14     ;0x013a
    8ca6:       32 41           pop     r2              ;
    8ca8:       0f 4e           mov     r14,    r15     ;
    8caa:       0f 5f           rla     r15             ;
    8cac:       0f 5e           add     r14,    r15     ;
    8cae:       0b 48           mov     r8,     r11     ;
    8cb0:       0f 93           cmp     #0,     r15     ;r3 As==00
    8cb2:       03 24           jz      $+8             ;abs 0x8cba
    8cb4:       0b 5b           rla     r11             ;
    8cb6:       1f 83           dec     r15             ;
    8cb8:       fd 23           jnz     $-4             ;abs 0x8cb4
        j++;
    8cba:       1a 53           inc     r10             ;
    8cbc:       3d 53           add     #-1,    r13     ;r3 As==11
    8cbe:       0f 4c           mov     r12,    r15     ;
    8cc0:       0f 5d           add     r13,    r15     ;
    8cc2:       6f 4f           mov.b   @r15,   r15     ;
    8cc4:       8f 11           sxt     r15             ;
    8cc6:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8cca:       1f 93           cmp     #1,     r15     ;r3 As==01
    8ccc:       14 38           jl      $+42            ;abs 0x8cf6
    8cce:       02 12           push    r2              ;
    8cd0:       32 c2           dint
    8cd2:       03 43           nop
    8cd4:       82 4a 32 01     mov     r10,    &0x0132 ;
    8cd8:       82 4f 38 01     mov     r15,    &0x0138 ;
    8cdc:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
    8ce0:       32 41           pop     r2              ;
    8ce2:       0e 4f           mov     r15,    r14     ;
    8ce4:       0e 5e           rla     r14             ;
    8ce6:       0e 5f           add     r15,    r14     ;
    8ce8:       0f 48           mov     r8,     r15     ;
    8cea:       0e 93           cmp     #0,     r14     ;r3 As==00
    8cec:       03 24           jz      $+8             ;abs 0x8cf4
    8cee:       0f 5f           rla     r15             ;
    8cf0:       1e 83           dec     r14             ;
    8cf2:       fd 23           jnz     $-4             ;abs 0x8cee
    8cf4:       0b 5f           add     r15,    r11     ;
    8cf6:       1a 53           inc     r10             ;
    8cf8:       3d 53           add     #-1,    r13     ;r3 As==11
    8cfa:       0f 4c           mov     r12,    r15     ;
    8cfc:       0f 5d           add     r13,    r15     ;
    8cfe:       6f 4f           mov.b   @r15,   r15     ;
    8d00:       8f 11           sxt     r15             ;
    8d02:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8d06:       1f 93           cmp     #1,     r15     ;r3 As==01
    8d08:       14 38           jl      $+42            ;abs 0x8d32
    8d0a:       02 12           push    r2              ;
    8d0c:       32 c2           dint
    8d0e:       03 43           nop
    8d10:       82 4a 32 01     mov     r10,    &0x0132 ;
    8d14:       82 4f 38 01     mov     r15,    &0x0138 ;
    8d18:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
    8d1c:       32 41           pop     r2              ;
    8d1e:       0e 4f           mov     r15,    r14     ;
    8d20:       0e 5e           rla     r14             ;
    8d22:       0e 5f           add     r15,    r14     ;
    8d24:       0f 48           mov     r8,     r15     ;
    8d26:       0e 93           cmp     #0,     r14     ;r3 As==00
    8d28:       03 24           jz      $+8             ;abs 0x8d30
    8d2a:       0f 5f           rla     r15             ;
    8d2c:       1e 83           dec     r14             ;
    8d2e:       fd 23           jnz     $-4             ;abs 0x8d2a
    8d30:       0b 5f           add     r15,    r11     ;
    8d32:       1a 53           inc     r10             ;
    8d34:       3d 53           add     #-1,    r13     ;r3 As==11
    8d36:       7d 38           jl      $+252           ;abs 0x8e32
    8d38:       0f 4c           mov     r12,    r15     ;
    8d3a:       0f 5d           add     r13,    r15     ;
    8d3c:       6f 4f           mov.b   @r15,   r15     ;
    8d3e:       8f 11           sxt     r15             ;
    8d40:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8d44:       1f 93           cmp     #1,     r15     ;r3 As==01
    8d46:       14 38           jl      $+42            ;abs 0x8d70
    8d48:       02 12           push    r2              ;
    8d4a:       32 c2           dint
    8d4c:       03 43           nop
    8d4e:       82 4a 32 01     mov     r10,    &0x0132 ;
    8d52:       82 4f 38 01     mov     r15,    &0x0138 ;
    8d56:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
    8d5a:       32 41           pop     r2              ;
    8d5c:       0e 4f           mov     r15,    r14     ;
    8d5e:       0e 5e           rla     r14             ;
    8d60:       0e 5f           add     r15,    r14     ;
    8d62:       0f 48           mov     r8,     r15     ;
    8d64:       0e 93           cmp     #0,     r14     ;r3 As==00
    8d66:       03 24           jz      $+8             ;abs 0x8d6e
    8d68:       0f 5f           rla     r15             ;
    8d6a:       1e 83           dec     r14             ;
    8d6c:       fd 23           jnz     $-4             ;abs 0x8d68
    8d6e:       0b 5f           add     r15,    r11     ;
    8d70:       0e 4a           mov     r10,    r14     ;
    8d72:       1e 53           inc     r14             ;
    8d74:       0f 4d           mov     r13,    r15     ;
    8d76:       0f 5c           add     r12,    r15     ;
    8d78:       5f 4f ff ff     mov.b   -1(r15),r15     ;
    8d7c:       8f 11           sxt     r15             ;
    8d7e:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8d82:       1f 93           cmp     #1,     r15     ;r3 As==01
    8d84:       14 38           jl      $+42            ;abs 0x8dae
    8d86:       02 12           push    r2              ;
    8d88:       32 c2           dint
    8d8a:       03 43           nop
    8d8c:       82 4e 32 01     mov     r14,    &0x0132 ;
    8d90:       82 4f 38 01     mov     r15,    &0x0138 ;
    8d94:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
    8d98:       32 41           pop     r2              ;
    8d9a:       0e 4f           mov     r15,    r14     ;
    8d9c:       0e 5e           rla     r14             ;
    8d9e:       0e 5f           add     r15,    r14     ;
    8da0:       0f 48           mov     r8,     r15     ;
    8da2:       0e 93           cmp     #0,     r14     ;r3 As==00
    8da4:       03 24           jz      $+8             ;abs 0x8dac
    8da6:       0f 5f           rla     r15             ;
    8da8:       1e 83           dec     r14             ;
    8daa:       fd 23           jnz     $-4             ;abs 0x8da6
    8dac:       0b 5f           add     r15,    r11     ;
    8dae:       0e 4a           mov     r10,    r14     ;
    8db0:       2e 53           incd    r14             ;
    8db2:       0f 4d           mov     r13,    r15     ;
    8db4:       0f 5c           add     r12,    r15     ;
    8db6:       5f 4f fe ff     mov.b   -2(r15),r15     ;
    8dba:       8f 11           sxt     r15             ;
    8dbc:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8dc0:       1f 93           cmp     #1,     r15     ;r3 As==01
    8dc2:       14 38           jl      $+42            ;abs 0x8dec
    8dc4:       02 12           push    r2              ;
    8dc6:       32 c2           dint
    8dc8:       03 43           nop
    8dca:       82 4e 32 01     mov     r14,    &0x0132 ;
    8dce:       82 4f 38 01     mov     r15,    &0x0138 ;
    8dd2:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
    8dd6:       32 41           pop     r2              ;
    8dd8:       0e 4f           mov     r15,    r14     ;
    8dda:       0e 5e           rla     r14             ;
    8ddc:       0e 5f           add     r15,    r14     ;
    8dde:       0f 48           mov     r8,     r15     ;
    8de0:       0e 93           cmp     #0,     r14     ;r3 As==00
    8de2:       03 24           jz      $+8             ;abs 0x8dea
    8de4:       0f 5f           rla     r15             ;
    8de6:       1e 83           dec     r14             ;
    8de8:       fd 23           jnz     $-4             ;abs 0x8de4
    8dea:       0b 5f           add     r15,    r11     ;
    8dec:       0e 4a           mov     r10,    r14     ;
    8dee:       3e 50 03 00     add     #3,     r14     ;#0x0003
    8df2:       0f 4d           mov     r13,    r15     ;
    8df4:       0f 5c           add     r12,    r15     ;
    8df6:       5f 4f fd ff     mov.b   -3(r15),r15     ;
    8dfa:       8f 11           sxt     r15             ;
    8dfc:       3f 50 d0 ff     add     #-48,   r15     ;#0xffd0
    8e00:       1f 93           cmp     #1,     r15     ;r3 As==01
    8e02:       14 38           jl      $+42            ;abs 0x8e2c
    8e04:       02 12           push    r2              ;
    8e06:       32 c2           dint
    8e08:       03 43           nop
    8e0a:       82 4e 32 01     mov     r14,    &0x0132 ;
    8e0e:       82 4f 38 01     mov     r15,    &0x0138 ;
    8e12:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
    8e16:       32 41           pop     r2              ;
    8e18:       0e 4f           mov     r15,    r14     ;
    8e1a:       0e 5e           rla     r14             ;
    8e1c:       0e 5f           add     r15,    r14     ;
    8e1e:       0f 48           mov     r8,     r15     ;
    8e20:       0e 93           cmp     #0,     r14     ;r3 As==00
    8e22:       03 24           jz      $+8             ;abs 0x8e2a
    8e24:       0f 5f           rla     r15             ;
    8e26:       1e 83           dec     r14             ;
    8e28:       fd 23           jnz     $-4             ;abs 0x8e24
    8e2a:       0b 5f           add     r15,    r11     ;
    8e2c:       2a 52           add     #4,     r10     ;r2 As==10
    8e2e:       2d 82           sub     #4,     r13     ;r2 As==10
    8e30:       83 37           jge     $-248           ;abs 0x8d38
    }
return ret;
}
    8e32:       0f 4b           mov     r11,    r15     ;
    8e34:       38 41           pop     r8              ;
    8e36:       39 41           pop     r9              ;
    8e38:       3a 41           pop     r10             ;
    8e3a:       3b 41           pop     r11             ;
    8e3c:       30 41           ret



--
------------------------
 Jeszcze lepsza oferta AlphaNet
 - nowe serwery wirtualne
 - nowy sklep internetowy
 - nowy wirtualny administrator
 Sprawdz www.alpha.pl 
------------------------

Reply via email to