TI中文支持网
TI专业的中文技术问题搜集分享网站

有关6678的新指令GMPY

6678提供的GMPY的算法为什么和GMPY4的不一样?

GMPY的算法原型是什么?

感觉指令集说明提供的GMPY算法和GMPY4所用算法有关系,但有所区别,请问区别在哪里?

King Wang:

ti liu你好:

GMPY是新增的指令,比GMPY4有所增强。

其主要区别在于GMPY可以完成小于等于32次方的多项式的CRC计算,而GMPY4只能完成小于等于8次方的多项式计算。

谢谢!

GMPY的C函数实现过程如下:

uword gmpy(uword src1,uword src2,uword polynomial)

{

// the multiply is always between GF(2^9) and GF(2^32)

// so no size information is needed

uint pp;

uint mask, tpp;

uint I;

pp = 0;

mask = 0x00000100; // multiply by computing

// partial products.

for ( I=0; i<8; I++ ){

if ( src2 & mask ) pp ^= src1;

mask >>= 1;

tpp = pp << 1;

if (pp & 0x80000000) pp = polynomial ^ tpp;

else pp = tpp;

}

if ( src2 & 0x1 ) pp ^= src1;

return (pp) ; // leave it asserted left.

}

ti liu:

回复 King Wang:

我想你误会我的意思了,c语言代码在指令集解释中已经给出。我的疑惑是,gmpy并不是gmpy4的简单扩充位宽,为什么?有什么区别?gmpy指令的数学来源是什么?crc计算是指什么?

ti liu:

回复 King Wang:

我用他给的例程12345678*126 生成多项式87654321怎么也算不出来他给的结果。后来才发现原来他给的生成多项式其实应该是187654321,这样才能得出结果。anyway谢谢你的答案

King Wang:

回复 ti liu:

呵呵,这时伽罗华域的方程式,比如x4+x3+x+1,那么就可以表示为x4 = x3+x+1,对应的二进制就是1011,最高位是默认的。

赞(0)
未经允许不得转载:TI中文支持网 » 有关6678的新指令GMPY
分享到: 更多 (0)