本帖最后由 justdomyself 于 2014-5-26 19:52 编辑
#define MEM_W(x) ((WORD) *((WORD *)(x)) )
typedef struct
{
WORD ID; // Message Identifier
BYTE LEN; // Data length (0-8)
BYTE RTR;
BYTE BUF[8]; // Data buffer
} CAN_MSG;
CAN_MSG msg,*pmsg;
msg.BUF[0]=0X20;
msg.BUF[1]=0X05;
msg.BUF[2]=0X60;
msg.BUF[3]=0X00;
pmsg=&msg;
WORD tmp=MEM_W(&pmsg->BUF[1]);
为何tmp的值是5 而不是0x6005
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
test=MEM_B(buf);
test=MEM_W(buf);
test=MEM_DW(buf);
但是这样又能正确的取到值
tmp=MEM_W(&pmsg->BUF[1]);
[0xe3a00005] mov r0,#5
[0xe19050b4] ldrh r5,[r0,r4]
tmp=MEM_W(&msg.BUF[1]);
[0xe3a00005] mov r0,#5
[0xe19050bd] ldrh r5,[r0,r13]
为啥反汇编就成了ldrh 半字读取 ,奇怪
operators.png (22.7 KB, 下载次数: 0)
下载附件
2014-5-26 16:52 上传
如果看出问题,请明言
一周热门 更多>