关于_nassert()函数的一些疑问?

2019-03-26 15:11发布

Hello 您好,

今天在阅读SPRU198k.pdf 文档时,看到下面函数,我想知道,编译器在编译时遇到

WORD_ALIGNED(xptr);
WORD_ALIGNED(yptr);

函数,自动将传入函数的指针所指地址xptr和yptr四字节对齐,还是在此判断xptr和yptr地址是否是四字节对齐?

#define WORD_ALIGNED(x) (_nassert(((int)(x) & 0x3) == 0))

void lesson3_c(short * restrict xptr, short * restrict yptr, short *zptr,short *w_sum, int N)
{
int i, w_vec1, w_vec2;
short w1,w2;
WORD_ALIGNED(xptr);
WORD_ALIGNED(yptr);
w1 = zptr[0];
w2 = zptr[1];
#pragma MUST_ITERATE(20, , 2);
for (i = 0; i < N; i++)
{
w_vec1 = xptr[i] * w1;
w_vec2 = yptr[i] * w2;
w_sum[i] = (w_vec1+w_vec2) >> 15;
}
}

非常感谢!

BRS,

Meng

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
Ternence.Hsu
1楼-- · 2019-03-26 16:48
< 是在判断xptr和yptr地址是否是四字节对齐。

void _nassert(int);

Generates no code. Tells the optimizer that the expression declared with the assert function is
true; this gives a hint to the optimizer as to what optimizations might be valid.

一周热门 更多>