|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候把读取16bit数据的一次操作分成了2次8bit的读取操作,导致网卡读数据间隔16bit就是类似一下的情形) H: |' ?" ]2 c2 J! }
5 {/ x: T5 N* s2 A- j9 r$ Cint a = (*(volatile u16_t *) 0x20000000)3 a. _8 T8 b9 P/ J
& q( A5 l& n- F# b; A& Y9 n
编译后
' l. G# k: ~3 qldrb r3, [r4]
9 e9 z* _1 [* W7 q/ qldrb r1, [r4, #1]. F8 G0 G: u7 |( l1 v
orr r1, r3, r1, lsl #8; l9 j; D' b: q4 F' _2 a7 y3 X
/ P: o5 Z) c. L" L有没有什么方法能让编译器一次读这16bit的数据啊?4 `5 r5 V, f- ~: U( {" H
2 q2 m) Z- [3 _ u( C2 r' ^! |9 W+ _
$ U R7 {& k( ]3 M# z4 G# T: ^6 l; l X& C
有没有什么方法能让ARM编译器一次读这16bit的数据啊?& A) X; y8 _- U, \/ y
|
|