计算机体系结构 E07:跨 ISA 同题对照
计算机体系结构 E07:跨 ISA 同题对照
核心问题
同一段 C 在不同 ISA 上生成不同汇编,能否据此判断哪种 ISA 更快?静态指令只展示编译器选择;真实性能还取决于动态路径、微架构、频率、缓存、编译选项和运行环境。交叉编译成功也不等于目标代码已经执行。
附件:结果与哈希、固定输入逐次执行轨迹、内核源码、测试入口和本次 arm64 反汇编。旧 Linux x86-64 反汇编单独保留,不作为本次产物。
范围与证据等级
证据按目标分栏:2026-10-01 在本地 macOS arm64 编译 object、保存反汇编,并链接测试入口运行 sum=34。入口读取 cc -dumpmachine 的实际目标并检查 object 格式,本次为 arm64-apple-darwin27.0.0、Mach-O arm64。当前 Apple Clang 存在,但 RISC-V 编译返回目标后端不支持的错误;这只描述当前工具链。没有跨目标计时、PMU 或动态机器指令数。
固定算法对 {2,-1,4,0,3} 计算 sum(values[i] * 3 + i),数学结果为 34。源码避免未定义行为,并保存 SHA-256,使不同目标能够对照同一输入契约。
核心案例:静态产物与原生执行分栏
当前 Apple Clang 生成 arm64 Mach-O object,保存对象哈希与 objdump -d 输出;另将同一算法与固定输入入口链接、原生运行并校验 sum=34。旧 x86-64 静态材料与本次 arm64 运行分别记录;RISC-V 尚无本次成功编译、反汇编或运行材料。
从仓库根目录运行 python3 examples/computer-architecture/run_batch.py E07,同一输入另编译带 CROSS_ISA_TRACE 的原生程序。五次循环的 (i, value, term, sum) 依次为 (0,2,6,6)、(1,-1,-2,4)、(2,4,14,18)、(3,0,3,21)、(4,3,13,34);执行输出逐行与独立手算比较,错误则非零退出。源码级别可数出五次取值、五次乘法、六次循环条件检查;它们不是动态机器指令数。插桩程序与未插桩程序分别保存二进制哈希,不能拿插桩耗时比较性能。
即使三份汇编都存在,也不能比较静态行数后宣布性能胜负。伪指令、变长编码、循环展开与向量化会改变文本形状。目标 ISA 的实际动态指令数还需要相应执行轨迹或硬件计数器,当前没有跨 ISA 的这类数据。
模式:跨平台证据按目标分栏
1 | |
跨 ISA、跨操作系统和跨编译器报告都应保留这些字段。缺少目标执行时,结论停在“能生成何种静态产物”。
验收结果
E07 单篇命令验证了固定输入的源码级执行轨迹、手算结果与本机 arm64 原生输出,实际目标、格式与反汇编已保存。RISC-V 当前编译失败且没有目标执行器,跨 ISA 动态机器指令数和速度对照未通过。E01-E08 全批另受 RTL 仿真工具缺口约束,不能由 E07 单篇成功替代。
模式速查
| 证据 | 可声称 | 不可声称 |
|---|---|---|
| 目标 object | 工具链能生成该产物 | 目标机器可运行 |
| 静态反汇编 | 指令选择与布局 | 动态指令数和速度 |
| 单目标原生输出 | 该环境功能结果 | 其他 ISA 的结果 |






