[請益] 關於ARM assemble的問題
我想要完成一個可以開根號的程式
但PROEMULATOR的除錯一直不通過
一直找不到錯誤在哪邊
可以請各位幫忙看一下嗎
謝謝大家
AREA ROOT, CODE, READONLY
ENTRY ; mark the first instruction to call
Xn_0 rn 0
Xn_1 rn 1
d_1 rn 2
d_2 rn 3
n_1 rn 4
Xn_2 rn 5
Xn_3 rn 6
START
LDR r0, =d
LDR d_1, [r0] ; d_1 is d
MOV d_2,d_1 ; d_2 is d Q16 type
CLZ d_1,d_1
MOV n_1,#16
SUB d_1,n_1,d_1 ;d_1 is power of d
MOV Xn_0,d_2,LSR d_1
MOV d_2,Xn_0 ;d_2 is 0x00.ff
MOV Xn_2,#0x10000
LOOP
MOV Xn_3,Xn_2,LSR #1 ; Xn_3 is n_1*Xn_2 =0.5 Xn
UMULL Xn_0,Xn_1,Xn_2,Xn_2 ; Xn_0 = Xn_2^2
MOV Xn_1,Xn_1,LSL #16
MOV Xn_0,Xn_0,LSR #16
ADD Xn_0,Xn_0,Xn_1
UMULL Xn_0,Xn_1,d_2,Xn_0 ; Xn_0 is d * Xn_0
MOV Xn_1,Xn_1,LSL #16
MOV Xn_0,Xn_0,LSR #16
ADD Xn_0,Xn_0,Xn_1
MOV n_1, #3 ; n_1 is 3
SUB Xn_0,n_1,Xn_0 ; Xn_0 is 3-Xn_0
UMULL Xn_0,Xn_1,Xn_3,Xn_0 ; Xn_0 is Xn+1
MOV Xn_1,Xn_1,LSL #16
MOV Xn_0,Xn_0,LSR #16
ADD Xn_0,Xn_0,Xn_1
CMP Xn_2,Xn_0
MOV Xn_2,Xn_0
BNE LOOP
UMULL Xn_0,Xn_1,Xn_0,d_2
MOV Xn_1,Xn_1,LSL #16
MOV Xn_0,Xn_0,LSR #16
ADD Xn_0,Xn_0,Xn_1
MOV d_1,d_1,LSR #1 ; d_1= d_1 /2
MOV n_1,#16
SUB d_1,d_1,n_1
MOV Xn_0,Xn_0,LSL d_1
STR Xn_0, [r0]
d DCD 0x28000
END
謝謝大家..拜託了><"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.140