耦合数据表示
提高还原关键计算背后逻辑的难度。
Coupled stateGF(2)Bit-sliceConsumer fusion
多个值,共同表示#
独立编码留下独立的恢复问题。耦合状态将相互作用的标量共同表示,使一个转换后的坐标可依赖多个原始值。Complexer 的区域机制支持对适用 int/long 计算使用仿射及非线性三角表示,并明确入口与出口约束。
关键在于有效计算发生的位置。转换后的区域可直接在耦合坐标中求值,减少每次操作前还原各原始变量的需要。结构分析因此必须同时恢复表示方式及其中表达的计算。
选择表示族#
实现不限于仿射算术,还包括 GF(2) 多项式耦合、位切片布尔电路、与 IEEE-754 相关的表示及编码循环递推。不同族适用于不同区域,具有各自的转换成本与证明义务,不能在任意字节码上互换启用。
| 表示 | 改变什么 | 分析影响 |
|---|---|---|
| 耦合坐标 | 多个 int/long 值共享一种表示。 | 除了独立编码,还需还原值之间的关系。 |
| GF(2) / bit-slice | 适用的标量计算采用多项式或布尔表示。 | 可识别的算术表达式不再是实际计算表示。 |
| 循环携带状态 | 表示可在支持的循环递推过程中持续存在。 | 局部表达式必须结合持续变化的状态理解。 |
| 使用方融合 | 选定运算直接在编码坐标中执行。 | 区域内不一定保留独立的先解码、后计算边界。 |
让常量融入使用方#
传统恢复边界先暴露数值,再交给另一操作。面向使用方的转换可将常量与消费它的计算融合。比较与决策逻辑可表示为变换器,选定算术则可通过 ConstantDynamic 链接的基本类型 MethodHandle 组合子 DAG 表达。
分析者需要还原的对象因此发生变化:可识别字面量或简单算术方法体,可能变为运行时组件间的关系。预期结果不变,改变的是表示与恢复路径。
保留语言语义契约#
表示转换必须保留 Java 的精确位宽、有符号解释、溢出及异常行为。针对性测试覆盖 32/64 位往返、耦合坐标内直接求值、上下文前提、分支循环及异常处理器可见状态。每个案例验证具体边界,并不构成对所有应用兼容性的保证。