RS编码汇编实现 联系客服

发布时间 : 星期一 文章RS编码汇编实现更新完毕开始阅读16dda85fa76e58fafab00363

//The following lines is the subroutine to implement mul of Galois Field .task label

dcopy m0:ar0.ar #table1 dcopy m0:ar1.ar #table2

dcopy m0:ar3.ar #table_andw dcopy vr0.0 m0:ar0.w dcopy vr1.0 m0:ar1.w

dcopy m0:ar2.ar #table_and

andw[8] m0:ar3++ vr0.0 m0:ar2++ //取第一个乘数的各位 andw[8] m0:ar3++ vr1.0 m0:ar2++ //取第二个乘数的各位 addw m0:ar2.ar m0:ar2.ar 6

subw m0:ar3.ar m0:ar3.ar 8 //m0:ar3指向第二个乘数各位的起始地址

dcopy rr0 16 //此循环用于展开成多项式的形式 repeatr #YIWEI cmpw m0:ar2.w 0 copy.ne m0:ar2.w 1

addw m0:ar2.ar m0:ar2.ar 1 YIWEI:

dcopy m0:ar0.all pm[#dataread].v copy m0:ar1.ar #table_t dcopy vr2 m0:ar3.v //copy m0:ar1.v vr2

15*andw[8] m0:ar1++ vr2 m0:ar0.v //之后m0:ar1是0x00a8 addw m0:ar2.ar m0:ar2.ar 8

15*taddw[8] m0:ar1(+=1).w m0:ar2(+=8).v //用到option 来对accumulator清零 dcopy vr3.0 m0:ar1.w

addw m0:ar1.ar m0:ar1.ar 1

15*andw[1] m0:ar1++ vr3.0 m0:ar2++ dcopy m0:ar1.all pm[#read_bb].v dcopy m0:ar2.all pm[#write_bb].v copy m0:ar2.v m0:ar1.v dcopy m0:ar0.ar #table_b

dcopy m0:ar3.all pm[#create_t].v

8*taddw[8] m0:ar0(+=1).w m0:ar3.v dcopy m0:ar1.ar #table_b

8*andw[1] m0:ar0(+=1).w vr3.0 m0:ar1++

dcopy m0:ar2.ar #table_d dcopy m0:ar3.ar #table_e dcopy vr4 m0:ar2.v

lslw m0:ar3.v m0:ar1.v vr4 addw m0:ar2.ar m0:ar3.ar 8

nop //nop

taddw[8] m0:ar2.w m0:ar3.v //其后需要加x个至少6个nop指令 6*nop ret .end

.main

dcopy vr5.0 0 dcopy vr5.1 0 dcopy vr5.2 0 dcopy vr5.3 0 dcopy vr5.4 0 dcopy vr5.5 0 dcopy vr5.6 0 dcopy vr5.7 0 dcopy vr6.0 0 dcopy vr6.1 0 dcopy vr6.2 0 dcopy vr6.3 0 dcopy vr6.4 0 dcopy vr6.5 0 dcopy vr6.6 0 dcopy vr6.7 0

dcopy m0:ar0.ar #TABLE_YUANSHISHUJU dcopy m1:ar0.ar #TABLE_BEICHENGSHU dcopy vr7.2 m0:ar0.ar

dcopy vr7.1 239

xunhuanti:

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 dcopy m0:ar0.ar vr7.2 dcopy vr7.0 m0:ar0.w

xorw vr7.0 vr7.0 vr6.7 //新元素首先和vr6.7做一次异或,用于反馈 copy m0:ar1.w vr7.0 //将反馈值搬移到乘法器入口

copy m0:ar2.w m1:ar0++ //将生成多项式元素搬移到乘法器入口 call #label //调用乘法器做第一乘法

xorw vr6.7 vr6.6 m0:ar2.w //将第一运算的结果与前一寄存器值异或后 搬移到下一个寄存器

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.6 vr6.5 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.5 vr6.4 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.4 vr6.3 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.3 vr6.2 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.2 vr6.1 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.1 vr6.0 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr6.0 vr5.7 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr5.7 vr5.6 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr5.6 vr5.5 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr5.5 vr5.4 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr5.4 vr5.3 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2 copy m0:ar1.w vr7.0 copy m0:ar2.w m1:ar0++ call #label

xorw vr5.3 vr5.2 m0:ar2.w

dcopy m0:ar1.ar #table1 dcopy m0:ar2.ar #table2