首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >riscv objdump -d输出不清

riscv objdump -d输出不清
EN

Stack Overflow用户
提问于 2022-02-28 14:30:58
回答 1查看 321关注 0票数 0

现在我正在尝试理解RISC-RISC,但是我对机器代码和程序集有一个不清楚的观点。

我编写了这样的C代码:

代码语言:javascript
复制
int main() {
    return 42;
}

然后,我通过以下命令生成了.s文件:

$ /opt/riscv/bin/riscv64-unknown-linux-gnu-gcc -S 42.c

产出如下:

代码语言:javascript
复制
        .file   "42.c"
        .option nopic
        .text
        .align  1
        .globl  main
        .type   main, @function
main:
        addi    sp,sp,-16
        sd      s0,8(sp)
        addi    s0,sp,16
        li      a5,42
        mv      a0,a5
        ld      s0,8(sp)
        addi    sp,sp,16
        jr      ra
        .size   main, .-main
        .ident  "GCC: (g5964b5cd727) 11.1.0"
        .section        .note.GNU-stack,"",@progbits

现在,我按照命令跑来生产一个精灵。

$ /opt/riscv/bin/riscv64-unknown-linux-gnu-gcc -nostdlib -o 42 42.s

因此,生成一个二进制文件。我试着用objdump这样的方式读到:

$ /opt/riscv/bin/riscv64-unknown-linux-gnu-objdump -d 42

输出结果是这样的:

代码语言:javascript
复制
42:     file format elf64-littleriscv


Disassembly of section .text:

00000000000100b0 <main>:
   100b0:       1141                    addi    sp,sp,-16
   100b2:       e422                    sd      s0,8(sp)
   100b4:       0800                    addi    s0,sp,16
   100b6:       02a00793                li      a5,42
   100ba:       853e                    mv      a0,a5
   100bc:       6422                    ld      s0,8(sp)
   100be:       0141                    addi    sp,sp,16
   100c0:       8082                    ret

我不明白objdump输出中机器代码的含义。例如,第一个指令addi根据.....0010011被翻译成此页 (虽然这不是一个正式的规范)。然而,抛出的十六进制是11411141只能表示2个字节,但指令应该是32位,4字节.

我想我遗漏了一些要点,但是我应该如何读取riscv的objdump输出呢?

EN

回答 1

Stack Overflow用户

发布于 2022-03-02 10:08:13

通过这样使用16位,您可以告诉objdump显示压缩( -M no-aliases )指令。

代码语言:javascript
复制
riscv64-unknown-elf-objdump -d -M no-aliases

在这种情况下,以c.开头的指令是压缩指令。

不幸的是,这也将禁用一些其他别名,使asm不太好阅读,如果你习惯了。您只需查看十六进制中的字节数(2比4),看看它是否是压缩指令。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71296538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档