这段代码如何将指针与64位边界对齐?

时间:2011-02-07 19:11:56

标签: c memory pointers alignment

我想知道这段代码如何将指针与64位边界对齐?我在uboot cpu / mpc85xx / ether_fcc.c中找到了这段代码。这里底层的以太网控制器要求缓冲区指针与64位边界对齐。

uint cbd_bufaddr;
volatile uchar *NetRxPackets[PKTBUFSRX];
cbd_bufaddr = (uint)NetRxPackets[i];

我认为以下检查是必须的,以确保指针是 64位对齐,但我在uboot代码中没有看到它。

if (cbd_bufaddr % 8 != 0)
    cbd_bufaddr += 8 - cbd_bufaddr % 8;

我真的很感激,如果有人能指出我是否遗漏了一些明显的东西?

1 个答案:

答案 0 :(得分:4)

原始代码中没有任何内容可以保证对齐的任何内容。您的第一个代码块只是将指针从NetRxPackets数组中拉出并将其粘贴到cbd_bufaddr中。您提供的代码中没有任何迹象表明该数组中的指针有任何对齐限制。您需要向我们展示初始化该数组的代码,以便我们告诉您有关正在发生的事情的更多信息。