new对象(short、byte数组)改为调用JCSystem.makeTransientXxxArray放到ram里面;

makeTransientXxxArray类型改为MEMORY_TYPE_TRANSIENT_RESETMEMORY_TYPE_TRANSIENT_RESET
This commit is contained in:
zcy
2025-09-09 00:04:54 +08:00
parent 5456e990e6
commit 8e25aab97a
8 changed files with 63 additions and 55 deletions

View File

@@ -143,12 +143,12 @@ public class Zuc256Core {
// a += (long)LFSR[13] << 17;
// a += (long)LFSR[15] << 15;
// ---- 先准备累加器 A (64位) ----
short[] A = new short[4]; // 64位累加器初始全0
short[] A = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET); // 64位累加器初始全0
A[0] = 0; A[1] = 0; A[2] = 0; A[3] = 0;
// 临时缓冲
short[] tmp32 = new short[2]; // 保存一个32位数 (lo,hi)
short[] tmp64 = new short[4]; // 保存移位后的64位数
short[] tmp32 = JCSystem.makeTransientShortArray((short)2, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);; // 保存一个32位数 (lo,hi)
short[] tmp64 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);; // 保存移位后的64位数
// a = LFSR[0]
tmp32[0] = state.LFSR_lo[0];
@@ -186,8 +186,8 @@ public class Zuc256Core {
// a = (a & 0x7FFFFFFF) + (a >>> 31);
// ---- 第一次折叠a = (a & 0x7FFFFFFF) + (a >>> 31) ----
short[] low31 = new short[4];
short[] r31 = new short[4];
short[] low31 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
short[] r31 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
and64_7FFFFFFF_to32(A, low31); // low31 = A & 0x7FFFFFFF
shr64u_31(A, r31); // r31 = A >>> 31
@@ -197,9 +197,9 @@ public class Zuc256Core {
add64(A, r31);
// int v = (int) ((a & 0x7FFFFFFF) + (a >>> 31));
// ---- 第二次折叠,得到 v32位----
short[] low31b = new short[4];
short[] r31b = new short[4];
short[] v64 = new short[4];
short[] low31b = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
short[] r31b = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
short[] v64 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);
and64_7FFFFFFF_to32(A, low31b);
shr64u_31(A, r31b);
@@ -303,7 +303,7 @@ public class Zuc256Core {
Zuc256Tables.getDRow(row, D, (short)0);
short[] tmp = new short[2]; // 临时存储 makeU31 输出 (lo,hi)
short[] tmp = JCSystem.makeTransientShortArray((short)2, JCSystem.MEMORY_TYPE_TRANSIENT_RESET); // 临时存储 makeU31 输出 (lo,hi)
// 逐项装载 LFSR
// LFSR[0] = makeU31(K[0] & 0xFF, D[0], K[21] & 0xFF, K[16] & 0xFF);
@@ -524,9 +524,9 @@ public class Zuc256Core {
R2);
// ---- LFSRWithWorkMode ----
short[] A = new short[4]; // 64位累加器
short[] tmp32 = new short[2];
short[] tmp64 = new short[4];
short[] A = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);; // 64位累加器
short[] tmp32 = JCSystem.makeTransientShortArray((short)2, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);;
short[] tmp64 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);;
// LFSRWithWorkMode
// long a = LFSR[0];
@@ -554,19 +554,19 @@ public class Zuc256Core {
create_64b_from_32b(tmp64, tmp32, (short)15); add64(A, tmp64);
// a = (a & 0x7FFFFFFF) + (a >>> 31);
short[] low31 = new short[4];
short[] r31 = new short[4];
short[] low31 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);;
short[] r31 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);;
and64_7FFFFFFF_to32(A, low31);
shr64u_31(A, r31);
short[] v64 = new short[4];
short[] v64 = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);;
add64(v64, low31);
add64(v64, r31);
// int v = (int) ((a & 0x7FFFFFFF) + (a >>> 31));
and64_7FFFFFFF_to32(v64, low31);
shr64u_31(v64, r31);
short[] vv = new short[4];
short[] vv = JCSystem.makeTransientShortArray((short)4, JCSystem.MEMORY_TYPE_TRANSIENT_RESET);;
add64(vv, low31);
add64(vv, r31);