嵌入式开发者社区

标题: 论坛里的前面的SYSBIOS系统的指针操作耗时长的问题没有解... [打印本页]

作者: moontiger564    时间: 2016-8-24 16:44
标题: 论坛里的前面的SYSBIOS系统的指针操作耗时长的问题没有解...
你好,前面提的问题:sysbios系统工程指针操作耗时长的问题 这个问题还没解决啊。
. L. O' _2 J4 |( k8 I2 p6 Lhttp://www.51dsp.net/forum.php?m ... p;tid=1198#lastpost; q$ B- k2 X; B; {$ [

! x. p/ X9 o/ s6 ^3 K2 a, R) y7 M+ V1 Z9 M9 Z+ k
自己有尝试好几次,感觉像是sysbios下面的读内存比写内存更花费指令周期,我看了测试程序的汇编语句:/ }$ o5 v1 G) ^4 u. {) I: a% ~
8 z; d0 W! k) g' [- L) S
. J# ^) Q  s1 Z( U
27                *pda = 30;
* F. s2 o* J7 yc30025cc:   0200106E            LDW.D2T2      *+B14[16],B4- m7 G; Y$ p, ~1 |  E" ~- ]
c30025d0:   DA93                MVK.S2        30,B5
1 J  }* F" \2 O3 y( Uc30025d2:   4C6E                NOP           3
$ j0 |" O* {% {6 qc30025d4:   029002F6            STW.D2T2      B5,*+B4[0]* ?! p$ D3 d8 A' t

5 U/ M: p4 m. a# P$ k5 C0 K4 i这是指针赋值的汇编语句;
% ?  }! g3 V' X/ J/ x) B& V下面这个是变量赋值的汇编语句:
6 _2 n# q  J" D" B* ~. u6 x0 ~27                test = 30;
: h' `$ f" ~& J4 j  K" Jc30025c4:   01800F28            MVK.S1        0x001e,A3
9 N7 {. z' Q# \6 O; ?6 X1 Mc30025c8:   0180017C            STW.D2T1      A3,*+B14[1]
% N4 Z* S  Q8 C$ h; m9 R6 H& S2 E2 ?: p: Y6 g* p( k( G

8 Z7 s( z, W0 H8 b* K, `我对比了看指针赋值比变量赋值也就是多了一个把地址读出来的操作,但是指针赋值要比变量赋值多几十倍的指令周期。完全不应该啊。
5 k% z: N7 {3 _; F* L5 P我把测试代码再贴出来一下,在前面那个问题上已经贴过了:
5 A$ G& r, h+ P% o& n; c, k#include“c6x.h”5 m9 B! R* r3 r( m' l; B' k
int test;6 O5 u5 `, |; w1 O! D! ~
int *pda= &test;1 E* a/ s, I9 D; @; g
long long t1,t2,tdelt,;
8 w% V7 j: Y3 B% z+ c( |Int main()2 n( b" J5 G, I
{2 D3 O5 P7 k, K5 z6 w
        TSCH=0;
6 B0 @* ?1 j- H9 _5 y3 C  [        TSCL=0;
! k5 x0 x% V9 v, ]  s' Q        t1 = _itoll (TSCH, TSCL);9 r( k: q7 \4 \0 _' w
        *pda = 20;3 U% G3 L+ ?- y- {" M; u& ~
        t2 = _itoll (TSCH, TSCL);
1 {0 s8 D" Z4 G, I        tdelt = t2-t1;9 r+ N/ o* z1 u$ L7 k$ ?6 h
        return 0;. ^8 {* Y/ O: T) V
}# R+ }2 `- ], h1 i7 s
! G2 r) K0 B0 B  g' q- E$ e0 w
此处tdelt的值得到是307,而将*pda = 20;替换成test=20;那tdelt的值就是6.差距如此大。
6 d; w1 A; ~& Z4 @' V. b- R8 Q! _4 o& V5 V

* g# I' g7 C0 v! t( n希望创龙的朋友的也可以试一下看看,只要在CCS里面新建有sysbios工程,就用上面的代码测一下就能看到现象了。. i; x/ z( k* q& b
请帮忙分析一下原因啊。$ J  A2 D7 D# L3 B
/ o6 e- K2 K6 }2 c/ d9 h' ^
8 w7 a- C! m% }
, ^5 u; W4 k! T1 [

作者: 希望缄默    时间: 2016-8-25 16:30
11 时钟周期 挺正常的..../ F7 M3 v) {8 w" p
[attach]1329[/attach]
0 x  y7 o8 L4 c( C6 O! [% x8 O- V1 H




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4