【问题标题】:Using od command on linux has it backwards? [closed]在linux上使用od命令有倒退吗? [关闭]
【发布时间】:2020-02-20 01:29:05
【问题描述】:

情况的故事,用预制的汇编语言构建一个汇编器。我正在我的 C 程序中构建命令。它有效,但它倒退了。

我的程序读取了测试用例,然后你应该在 Linux 上对输出的二进制文件进行 od 操作。以下是测试用例、十六进制程序集和输出的示例:

add r1 r2 r3 (11 23)
interrupt 0 (80 00)

这只是我的一个单元测试的一个简短的 sn-p。每当我在 linux 上执行 od 命令时,都会得到以下结果:

od -x output.bin
0000000 2311 0080

它们被向后翻转。真的,应该是:

0000000 1123 8000

我尝试使用 linux 命令 od -t x1 output.bin 并且有效,但是它将它分成 2 位。必须有一种方法来翻转字节。

【问题讨论】:

  • od--endian={big|little} 开关。
  • 看起来是字节序问题。
  • @EugeneSh。我怎么把它放在命令上
  • od -x --endian=big output.bin
  • Look here 了解如何使用odendian 开关。

标签: c linux assembly hex byte


【解决方案1】:

默认od 读取当前系统字节序中的 16 位值。

使用od -bod -t x1 将输入读取为字节。

od 的一些实现有一个--endian 命令行选项来选择要使用的字节顺序,但是 OS/X 上可用的 BSD 版本和 linux 上的 GNU 版本都不支持它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2013-01-22
    • 2018-10-24
    • 2021-12-05
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多