TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候把读取16bit数据的一次操作分成了2次8Bit的读取操作,导致网卡读数据间隔16bit就是类似一下的情形
6 C- Y8 m* l( s( c
; X# j5 W6 I7 f( T3 aint a = (*(volatile u16_t *) 0x20000000)0 N& _3 \6 T8 F R9 D- w6 j+ i. i
# N' D @" s, Y* H
编译后
; v2 X$ D; W2 L0 F$ b oldrb r3, [r4]; S1 p% ^! k, k* E' ?
ldrb r1, [r4, #1]+ Y* \6 R/ J, v2 R& m7 [5 ]1 j
orr r1, r3, r1, lsl #8
; y* }7 p5 A2 N0 |7 Q* e
6 e f5 c& ]2 c2 F0 H2 {) v有没有什么方法能让编译器一次读这16bit的数据啊?
+ A! R5 `( |' ], c |
|