【问题标题】:Why are interpretations of a binary file so scrambled? [closed]为什么二进制文件的解释如此混乱? [关闭]
【发布时间】:2021-05-09 08:34:18
【问题描述】:

看,这是一个只会打招呼的 c++ 程序。 Cpp program that just says hi

【问题讨论】:

  • 我看了。我不明白你在问什么。
  • 您希望在二进制文件中看到什么?不是二进制的?
  • 右栏,怎么这么乱?
  • 因为它试图将二进制数据解释为文本,而事实并非如此

标签: c++ binary hex


【解决方案1】:

源代码描述了程序的行为,而不是执行任务的指令序列。编译器获取行为描述,并假设优化已打开,生成最佳指令列表来执行它可以完成的任务。编译器要求的优化级别越高,编译器就越努力寻找更有效的解决方案。

感谢As-If Rule,只要不改变源代码描述的可观察行为1 。您可能会发现整段代码都消失了,因为它们没有可观察的结果,或者可观察的结果解析为编译器可以预先计算和存储的常量。

编译器完成后,输出应该看起来像输入通过搅拌器。

至于为什么二进制输出是一团糟,那是二进制,宝贝。它并不意味着人类可读。另一方面,计算机喜欢这些东西。

1 请注意,有一些例外情况,例如 copy elision,对于无行为更改规则。

【讨论】:

    猜你喜欢
    • 2019-12-22
    • 2021-12-19
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多