🌶️ $.s = \textrm{compile}(.c)$:编译正确性
$.c$ 执行中所有外部观测者可见的行为,必须在 $.s$ 中保持一致
- External function calls (链接时确定)
- 如何调用由 Application Binary Interface (ABI) 规定
- 可能包含系统调用,因此不可更改、不可交换
- 编译器提供的 “不可优化” 标注
volatile
[load | store | inline assembly]
- Termination
在此前提下,任何翻译都是合法的 (例如我们期望更快或更短的代码)
- 编译优化的实际实现:(context-sensitive) rewriting rules
- 代码示例:观测编译器优化行为和 compiler barrier