【发布时间】:2011-03-04 11:48:38
【问题描述】:
考虑一种情况。我们有一些特定的 C++ 编译器、一组特定的编译器设置和一个特定的 C++ 程序。
我们使用该编译器和这些设置编译该特定程序两次,每次都进行“干净编译”。
发出的机器代码应该相同(我不是指时间戳和其他花里胡哨的东西,我的意思是只有将要执行的真实代码)还是允许它在不同的编译中有所不同?
【问题讨论】:
-
@Neil Butterworth 回答了同样的问题。 IIRC,他解释了为什么即使一切似乎都相同,编译器也会产生不同的输出。我正在寻找它:)
-
这听起来像是一个技巧问题;)
-
如果编译器在某些情况下使用统计算法,那么是的,它可能会产生稍微不同的代码,即使用替代寄存器或代码布局。
-
标准是否说明了机器代码?不?那么,允许any 输出保留标准中指定的语义。尔格:是的。
-
您的编译器是否设置了随机化函数地址以防止有针对性的缓冲区溢出攻击?
标签: c++ compiler-construction compilation