📄 mul64.s
字号:
AREA ARMex, CODE, READONLY ; name this block of code
ENTRY ; mark first instruction
; to execute
start
MOV ip, a1, LSR #16 ; ip = a_hi
MOV a4, a2, LSR #16 ; a4 = b_hi
BIC a1, a1, ip, LSL #16 ; a1 = a_lo
BIC a2, a2, a4, LSL #16 ; a2 = b_lo
MUL a3, a1, a2 ; a3 = a_lo * b_lo (m_lo)
MUL a2, ip, a2 ; a2 = a_hi * b_lo (m_mid1)
MUL a1, a4, a1 ; a1 = a_lo * b_hi (m_mid2)
MUL a4, ip, a4 ; a4 = a_hi * b_hi (m_hi)
ADDS ip, a2, a1 ; ip = m_mid1 + m_mid2 (m_mid)
ADDCS a4, a4, #&10000 ; a4 = m_hi + carry (m_hi')
ADDS a1, a3, ip, LSL #16 ; a1 = m_lo + (m_mid<<16)
ADC a2, a4, ip, LSR #16 ; a2 = m_hi' + (m_mid>>16) + carry
MOV pc, lr
stop
MOV r0, #0x18 ; angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SWI 0x123456 ; Angel semihosting ARM SWI
END ; Mark end of file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -