请教一个关于从奇数地址取值出现的问题

2020-01-23 14:40发布

本帖最后由 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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
justdomyself
1楼-- · 2020-01-25 04:15
   tmp=MEM_W(& (pmsg->BUF[1]) );
[0xe3a00005]   mov      r0,#5
[0xe19050b4]   ldrh     r5,[r0,r4]

上代码中r4是一个偶地址,r4+r0就变成了奇地址

ldrh     r5,[r0,r4]就出现了问题
xiaotaiyang
2楼-- · 2020-01-25 06:00
楼主请尽快修改标题,否则会被封锁ID。
(标题要说明是关于指针的哪一个问题?)

一周热门 更多>