作者fcwi (我爱老婆)
看板Electronics
标题[请益] 关於ARM assemble的问题
时间Fri Jan 5 17:48:35 2007
我想要完成一个可以开根号的程式
但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