⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm.s

📁 this is the MONTGOMERY INV routine for the prime field and large numbers for ECC or RSA algorithms.
💻 S
字号:
        NAME    main
        
        PUBLIC  __iar_program_start
        
        SECTION .intvec : CODE (2)
        CODE32
        
__iar_program_start
        B       main

        PUBLIC  __iar_zero_init
        PUBLIC  __iar_copy_init
        
        EXTERN  acl_p_mont_inv
        SECTION .text : CODE (2)
        CODE32
        
#define         res     r0      
#define         aa      r1      
#define         mm      r2      
#define         tt      r3      
#define         temp    r4      

// int acl_p_mont_inv(vect res, vect a, vect m, vect3 tmp, size_t len);
//   res = +- (a^-1) * (2^k) mod m     (m must be odd)
//   returns 0 if a is non-invertible, +- k otherwise
//   a != 0  and  a != 1
// on entry:
//   r0 = pointer to result
//   r1 = pointer to a
//   r2 = pointer to m
//   r3 = pointer to temporary array (size: 3*len ints)
//   [sp] = length of input/output arrays in 32-bit words

main   
        ldr     res,= result_buf
        ldr     aa,= source1_buf
        ldr     mm,= source2_buf
        ldr     tt,= temp_buf

        ldr     temp,= 3
        str      temp, [aa]
     
        ldr     temp,= 37
        str      temp, [mm]

        ldr     temp,= 1
        str      temp, [sp]

        BL      acl_p_mont_inv

        B       main

__iar_zero_init:
__iar_copy_init:

        SECTION .data : DATA (2)
        DATA

result_buf    DS32    64
source1_buf   DS32    64
source2_buf   DS32    64
temp_buf      DS32    64
        
        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -