计算机体系结构 E07:跨 ISA 同题对照
计算机体系结构 E07:跨 ISA 同题对照
核心问题
同一段 C 在不同 ISA 上生成不同汇编,能否据此判断哪种 ISA 更快?静态指令只展示编译器选择;真实性能还取决于动态路径、微架构、频率、缓存、编译选项和运行环境。交叉编译成功也不等于目标代码已经执行。
附件:E07-cross-isa.json、cross_isa.c和x86-64 反汇编。
范围与证据等级
整体证据等级为功能执行,因为归档记录包含 arm64 原生 sum=34。当前 x86-64 宿主只完成编译与反汇编,没有运行该对象;当前环境没有可执行的 Clang,RISC-V 目标编译状态为 127,后端不可用。没有计时、PMU 或动态机器指令数。
固定算法对 {2,-1,4,0,3} 计算 sum(values[i] * 3 + i),数学结果为 34。源码避免未定义行为,并保存 SHA-256,使不同目标能够对照同一输入契约。
核心案例:静态产物与原生执行分栏
当前 GCC 13.3.0 成功生成 x86-64 ELF object,保存对象哈希与 objdump -d 输出,但 execution=NOT_RUN。arm64 只有 2026-09-22 macOS 上保存的原生功能输出,当前容器没有重跑。RISC-V 只记录工具不可用,不推断 ISA 本身不可用。
即使三份汇编都存在,也不能比较静态行数后宣布性能胜负。伪指令、变长编码、循环展开与向量化会改变文本形状,动态执行次数还取决于输入和控制流。
模式:跨平台证据按目标分栏
1 | |
跨 ISA、跨操作系统和跨编译器报告都应保留这些字段。缺少目标执行时,结论停在“能生成何种静态产物”。
验收结果
本批脚本退出 0。x86-64 编译和反汇编成功且未执行;arm64 保留历史原生 sum=34;RISC-V 后端不可用。输出没有跨 ISA 速度结论。
模式速查
| 证据 | 可声称 | 不可声称 |
|---|---|---|
| 目标 object | 工具链能生成该产物 | 目标机器可运行 |
| 静态反汇编 | 指令选择与布局 | 动态指令数和速度 |
| 单目标原生输出 | 该环境功能结果 | 其他 ISA 的结果 |
一手参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.






