📄 basic_opasm.s
字号:
#include "linkage.h" .section ".data" .global Overflow .global Carry .align 5Overflow: .hword 0x0000Carry: .hword 0x0000 .section ".text" .type Overflow_p, #object .align 5Overflow_p: .long Overflow Carry_p: .long CarryMAX_32_P: .long 0x7fffffffMIN_32_P: .long 0x80000000MIN_16_P: .long 0xffff8000MAX_16_P: .long 0x00007fff/* static Word16 negate(Word16 var1) */ .section ".text".align 5.section ".text".global negatenegate: cmp r0,#0x8000 mvneq r0,#0x8000 rsbne r0,r0,#0 mov pc,lr.align 5.section ".text".global L_negateL_negate: cmp r0,#0x80000000 mvneq r0,#0x80000000 rsbne r0,r0,#0 mov pc,lr.global extract_hextract_h: mov r0,r0,asr #16 mov pc,lr.global extract_lextract_l: mov r0,r0,lsl #16 mov r0,r0,asr #16 mov pc,lr.align 5.section ".text".global L_addL_add: adds r0,r1,r0 movvc pc,lr mvnmi r0,#0x8,4 movpl r0,#0x8,4 mov pc,lr.align 5.section ".text".global L_subL_sub: subs r0,r0,r1 movvc pc,lr mvnmi r0,#0x8,4 movpl r0,#0x8,4 mov pc,lr.align 5.section ".text".global L_macL_mac: mul r1,r2,r1 teq r1,#0x4,4 mvneq r1,#0x8,4 movne r1,r1,lsl #1 adds r0,r0,r1 movvc pc,lr mov r2,#1 ldr r3,Overflow_p mvnmi r0,#0x8,4 movpl r0,#0x8,4 strh r2,[r3] mov pc,lr.align 5.section ".text".global L_msuL_msu: mul r1,r2,r1 teq r1,#0x4,4 mvneq r1,#0x8,4 movne r1,r1,lsl #1 subs r0,r0,r1 movvc pc,lr mov r2,#1 mvnmi r0,#0x8,4 movpl r0,#0x8,4 ldr r3,Overflow_p strh r2,[r3] mov pc,lr.align 5.section ".text".global L_multL_mult: mul r0,r1,r0 teq r0,#0x4,4 movne r0,r0,lsl #1 movne pc,lr mvn r0,#0x8,4 mov pc,lr.align 5.section ".text".global roundround:/* adds r0,r0,#0x00008000 movvc r0,r0,asr #16 movvc pc,lr mov r1,#0x80000000 movmi r0,r1,asr #16 mvnpl r0,r1,asr #16*/ movs r0,r0,asr #16 addcs r0,r0,#1 mov pc,lr.align 5.section ".text".global saturesature: mov r1,#0x80000000 @modified cmn r0,r1,asr #16 mvngt r0,r1,asr #16 movgt pc,lr cmp r0,r1,asr #16 movlt r0,r1,asr #16 mov pc,lr.align 5.section ".text".global L_deposit_lL_deposit_l: mov r0,r0,lsl #16 mov r0,r0,asr #16 mov pc,lr.align 5.section ".text".global L_CompL_Comp: mov r0,r0,lsl #16 adds r0,r0,r1,lsl #1 movvc pc,lr mvnmi r0,#0x8,4 movpl r0,#0x8,4 mov pc,lr.align 5.section ".text".global multmult: mul r0,r1,r0 mov r0,r0,asr #15 mov r1,#0x80000000 @modified cmn r0,r1,asr #16 mvngt r0,r1,asr #16 movgt pc,lr cmp r0,r1,asr #16 movlt r0,r1,asr #16 mov pc,lr.align 5.section ".text".global Mpy_32Mpy_32: mul r3,r0,r3 @mult(hi1,lo2)--->lo2(r3) mov r3,r3,asr #15 mul r1,r2,r1 @mult(hi2,lo1)--->lo1(r1) mov r1,r1,asr #15 mul r0,r2,r0 @L_mult(hi1,hi2) teq r0,#0x4,4 movne r0,r0,lsl #1 mvneq r0,#0x8,4 add r1,r1,r3 @(mult(hi1,lo2)+mult(hi2,lo1))<<1 adds r0,r0,r1,lsl #1 @all plus movvc pc,lr mvnmi r0,#0x8,4 movpl r0,#0x8,4 mov pc,lr.align 5.section ".text".global add add: add r0,r0,r1 ldr r2,Overflow_p ldr r1,MAX_16_P mov r3,#1 cmp r0,r1 movgt r0,r1 strgth r3,[r2] movgt pc,lr cmn r0,r1 mvnlt r0,r1 strlth r3,[r2] mov pc,lr.align 5.section ".text".global sub sub: sub r0,r0,r1 ldr r2,Overflow_p ldr r1,MAX_16_P mov r3,#1 cmp r0,r1 movgt r0,r1 strgth r3,[r2] movgt pc,lr cmn r0,r1 mvnlt r0,r1 strlth r3,[r2] mov pc,lr.align 5.section ".text".global mult_rmult_r: mov r2,#0x4000 mla r0,r1,r0,r2 mov r0,r0,asr #15 ldr r1,MAX_16_P cmp r0,r1 movgt r0,r1 movgt pc,lr cmn r0,r1 mvnlt r0,r1 mov pc,lr.global L_deposit_hL_deposit_h: mov r0,r0,lsl #16 mov pc,lr.align 5.section ".text".global Mpy_32_16Mpy_32_16: mul r0,r2,r0 teq r0,#0x4,4 movne r0,r0,lsl #1 mvneq r0,#0x8,4 mul r1,r2,r1 mov r1,r1,asr #15 adds r0,r0,r1,lsl #1 @all plus movvc pc,lr mvnmi r0,#0x8,4 movpl r0,#0x8,4 mov pc,lr.align 5.section ".text".global L_ExtractL_Extract: mov r3,r0,asr #16 strh r3,[r1] sub r0,r0,r3,lsl #16 mov r0,r0,asr #1 strh r0,[r2] mov pc,lr.align 5.section ".text".global shlshl:2: cmp r1,#15 movgt r1,#15 mov r0,r0,lsl r1 ldr r1,MAX_16_P @ldr r1,MAX_16_P modified cmp r0,r1 movgt r0,r1 movgt pc,lr cmn r0,r1 mvnlt r0,r1 mov pc,lr.global shrshr: cmp r1,#0 rsblt r1,r1,#0 blt 2b mov r0,r0,asr r1 mov pc,lr.align 5.section ".text".global L_shrL_shr:3: mov r0,r0,asr r1 mov pc,lr.align 5.section ".text".global L_shlL_shl: cmp r1,#0 rsble r1,r1,#0 ble 3b4: adds r0,r0,r0 bvs 5f subs r1,r1,#1 bne 4b mov pc,lr5: movpl r0,#0x80000000 mvnmi r0,#0x80000000 mov pc,lr.align 5.section ".text".global abs_sabs_s: cmp r0,#0x8000 mvneq r0,#0x8000 moveq pc,lr cmp r0,#0 rsblt r0,r0,#0 mov pc,lr.align 5.section ".text".global L_absL_abs: cmp r0,#0x80000000 mvneq r0,#0x8000000 moveq pc,lr cmp r0,#0 rsblt r0,r0,#0 mov pc,lr.align 5.section ".text".global L_shr_rL_shr_r: movs r0,r0,asr r1 addcs r0,r0,#1 mov pc,lr.align 5.section ".text".global myadd myadd: add r0,r0,r1 ldr r1,MAX_16_P cmp r0,r1 movgt r0,r1 movgt pc,lr cmn r0,r1 mvnlt r0,r1 mov pc,lr.align 5.section ".text".global mysub mysub: sub r0,r0,r1 ldr r1,MAX_16_P cmp r0,r1 movgt r0,r1 movgt pc,lr cmn r0,r1 mvnlt r0,r1 mov pc,lr.align 5.section ".text".global myL_macmyL_mac: mul r1,r2,r1 teq r1,#0x4,4 mvneq r1,#0x8,4 movne r1,r1,lsl #1 adds r0,r0,r1 movvc pc,lr mvnmi r0,#0x8,4 movpl r0,#0x8,4 mov pc,lr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -