]> git.cryptolib.org Git - avr-crypto-lib.git/commitdiff
BMW-small -100 bytes / fix for help cmd
authorbg <bg@b1d182e4-1ff8-0310-901f-bddb46175740>
Tue, 15 Dec 2009 22:20:46 +0000 (22:20 +0000)
committerbg <bg@b1d182e4-1ff8-0310-901f-bddb46175740>
Tue, 15 Dec 2009 22:20:46 +0000 (22:20 +0000)
bmw/bmw_small-asm.S
test_src/cli-core.S

index 03f87028d49e6eaee8ed80a4286e7a7a7eff6595..0699893601bb604a77e7bb457444200c92c091fa 100644 (file)
@@ -2107,43 +2107,9 @@ dst0 =  10
 dst1 =  11
 .global bmw256
 bmw256:
-       push_range 2, 11
-       stack_alloc_large 64+4
-       adiw r30, 1
-       movw ctx0, r30
-       movw dst0, r24
-       movw msg0, r22
-       movw len0, r18
-       movw len2, r20
-       movw r24, ctx0
-       rcall bmw256_init
-20:
-       mov r18, len2
-       or  r18, len3
-       breq 50f
-       movw r24, ctx0
-       movw r22, msg0
-       rcall bmw_small_nextBlock
-       ldi r20, 2
-       sub len1, r20
-       sbc len2, r1
-       sbc len3, r1
-       ldi r20, 64
-       add msg0, r20
-       adc msg1, r1
-       rjmp 20b
-50:
-       movw r24, ctx0
-       movw r22, msg0
-       movw r20, len0
-       rcall bmw_small_lastBlock
-       movw r24, dst0
-       movw r22, ctx0
-       rcall bmw256_ctx2hash
-       stack_free_large 64+4
-       pop_range 2, 11
-       ret
-
+       push r16
+       ldi r16, 1
+       rjmp bmw_small_all
 
 /*******************************************************************************
 * void bmw224(void* dest, const void* msg, uint32_t length_b){
@@ -2174,6 +2140,10 @@ dst0 =  10
 dst1 =  11
 .global bmw224
 bmw224:
+       push r16
+       clr r16
+
+bmw_small_all:
        push_range 2, 11
        stack_alloc_large 64+4
        adiw r30, 1
@@ -2183,7 +2153,11 @@ bmw224:
        movw len0, r18
        movw len2, r20
        movw r24, ctx0
-       rcall bmw224_init
+       ldi r30, pm_lo8(init_lut)
+       ldi r31, pm_hi8(init_lut)
+       add r30, r16
+       adc r31, r1
+       icall
 20:
        mov r18, len2
        or  r18, len3
@@ -2206,7 +2180,19 @@ bmw224:
        rcall bmw_small_lastBlock
        movw r24, dst0
        movw r22, ctx0
-       rcall bmw224_ctx2hash
+       ldi r30, pm_lo8(c2h_lut)
+       ldi r31, pm_hi8(c2h_lut)
+       add r30, r16
+       adc r31, r1
+       icall
        stack_free_large 64+4
        pop_range 2, 11
+       pop r16
        ret
+
+init_lut:
+       rjmp bmw224_init
+       rjmp bmw256_init
+c2h_lut:
+       rjmp bmw224_ctx2hash
+       rjmp bmw256_ctx2hash
index cbe97600cbe8860626c8b5067fffafe156186129..69671f6339320ba59b57d75efd25ac2cbdd61f94 100644 (file)
@@ -38,7 +38,7 @@
  *    param cmdlist:  r24:r25
  */
 TMP_CNT_0 = 26
-TMP_CNT_1 = 27 
+TMP_CNT_1 = 27
 .global max_cmd_length
 max_cmd_length:
        movw r30, r24
@@ -68,10 +68,10 @@ max_cmd_length:
        brge 1b
        movw r24, TMP_CNT_0
        rjmp 1b
-                
+
 /******************************************************************************/
 .global echo_ctrl
-echo_ctrl: 
+echo_ctrl:
        call strstrip
        tst r24
        brne 3f
@@ -95,14 +95,14 @@ echo_ctrl:
        cpi r20, 'n'
        breq exit_1
        cpi r20, 'f'
-       breq exit_0     
+       breq exit_0
        ret
-exit_1:        
+exit_1:
        ldi r20, 1
        rjmp exit
 exit_0:
        ldi r20, 0
-exit:  
+exit:
        sts cli_echo, r20
        ret
 print_echo_status:
@@ -128,12 +128,12 @@ print_echo_status:
        clr r25
        ldi r24, '\n'
        rcall cli_putc
-       ret             
+       ret
 pecho:
 .asciz "\r\necho is o"
 
 /******************************************************************************/
-/* int8_t search_and_call(char* cmd, uint16_t maxcmdlength, PGM_VOID_P cmdlist)        
+/* int8_t search_and_call(char* cmd, uint16_t maxcmdlength, PGM_VOID_P cmdlist)
  *    param cmd:          r24:r25
  *    param maxcmdlength: r22:r23
  *    param cmdlist:      r20:r21
@@ -146,7 +146,7 @@ CMD_1 = 17
 snc_auto_help:
        movw r24, r22
        movw r22, r20
-       rcall cli_auto_help     
+       rcall cli_auto_help
 snc_return_1:
        ldi r24, 1
        rjmp snc_return
@@ -154,7 +154,7 @@ snc_return_2:
        ldi r24, 2
 snc_return:
        clr r25
-       ret      
+       ret
 
 .global search_and_call
 search_and_call:
@@ -183,7 +183,7 @@ search_and_call:
        tst r18
        brne 1f
 2:     rjmp snc_auto_help
-1:     
+1:
        push r28
        push r29
        push CMD_0
@@ -237,7 +237,7 @@ snc_found:
        icall
        ldi r24, 1
        rjmp 5f
-4:     ldi r24, 2      
+4:     ldi r24, 2
 snc_return_0:
        clr r24
 5:     pop LEN_1
@@ -261,7 +261,7 @@ nocommand_str:
  *   param cmdlist:   r22:r23
  */
 ITM_0 = 12
-ITM_1 = 13 
+ITM_1 = 13
 CMD_0 = 14
 CMD_1 = 15
 LEN_0 = 16
@@ -300,7 +300,7 @@ cli_option_listing:
        movw r24, ITM_0
        rcall cli_putstr_P
        rjmp 1b
-99:    
+99:
        ldi r24, lo8(prompt_str)
        ldi r25, hi8(prompt_str)
        rcall cli_putstr_P
@@ -310,9 +310,9 @@ cli_option_listing:
        pop_range 12, 17
        ret
 
-prompt_str:    
+prompt_str:
 .asciz "\r\n>"
-itemprefix_str:        
+itemprefix_str:
 .asciz "\r\n   "
 
 /******************************************************************************/
@@ -322,7 +322,7 @@ itemprefix_str:
  */
 
 TMP_0 = 14
-TMP_1 = 15 
+TMP_1 = 15
 LEN_0 = 16
 LEN_1 = 17
 LST_0 = 28
@@ -341,7 +341,7 @@ cli_auto_help:
        lpm r25, Z+
        movw r28, r30
        adiw r24, 0
-       breq 99f        
+       breq 99f
        movw TMP_0, r24
        rcall cli_putstr_P
        movw r24, TMP_0
@@ -357,9 +357,9 @@ cli_auto_help:
        brne 2b
 4:     ldi r24, lo8(sep_str)
        ldi r25, hi8(sep_str)
+       rcall cli_putstr_P
        ldi r22, lo8(none_str)
        ldi r23, hi8(none_str)
-       rcall cli_putstr_P
        movw r30, r28
        lpm r24, Z+
        lpm r25, Z+
@@ -369,7 +369,7 @@ cli_auto_help:
        ldi r22, lo8(yes_str)
        ldi r23, hi8(yes_str)
 5:     movw r24, r22
-       rcall cli_putstr_P      
+       rcall cli_putstr_P
        ldi r24, lo8(sep2_str)
        ldi r25, hi8(sep2_str)
        rcall cli_putstr_P
@@ -388,7 +388,7 @@ cli_auto_help:
        rcall cli_putc
        adiw r28, CMDLIST_ENTRY_SIZE-4
        rjmp 1b
-99:    
+99:
        pop_range 28, 29
        pop_range 14, 17
        ret