2015-07-16 2 views
3

J'ai cloné le référentiel riscv-tools (branche principale) et j'ai suivi la procédure de construction. Tout s'est bien passé.Options de dissassemblage RISCV numériques et non-alias

J'ai ensuite essayé de compiler le programme Bonjour tout le monde pour un jeu d'instructions RV32IM, en faisant ceci:

riscv64-unknown-elf-gcc -m32 -march=RV32IM -o hello hello.c -save-temps 

j'ai utilisé options de sauvegarde-temps pour conserver les fichiers intermédiaires. (Hello.s, hello.i, hello.o)

Tout est OK jusqu'à présent, je peux courir le bonjour programme mondial avec:

spike pk hello 
Hello world! 

Maintenant, je voulais jeter un oeil sur le code de montage pour ce programme. Je l'ai fait ce qui suit et je reçois le code assembleur dans hello.dump

riscv64-unknown-elf-objdump -D -S -l -F hello.o > hello.o.dump 

Maintenant ce que je serais curieux de voir est le code assembleur sans instructions de pseudo et les noms ABI-registre non.

Il semble possible d'obtenir que, quand je fais:

riscv64-unknown-elf-objdump --target-help 

Je reçois ceci:

The following RISC-V-specific disassembler options are supported for use 
with the -M switch (multiple options should be separated by commas): 

numeric  Print numeric reigster names, rather than ABI names. 

no-aliases Disassemble only into canonical instructions, rather 
       than into pseudoinstructions. 

Cependant lorsque je tente d'ajouter ces options, il ne fonctionne pas.

riscv64-unknown-elf-objdump -D -S -l -F -Mno-aliases hello.o > hello.o.dump 
Unrecognized disassembler option: no-aliases 

riscv64-unknown-elf-objdump -D -S -l -F -Mnumeric hello.o > hello.o.dump 
Unrecognized disassembler option: numeric 

riscv64-unknown-elf-objdump -D -S -l -F -Mnumeric,no-aliases hello.o > hello.o.dump 
Unrecognized disassembler option: numeric 
Unrecognized disassembler option: no-aliases 

Est-ce une erreur de syntaxe de commande ou n'est-elle pas encore supportée par le désassembleur?

Répondre

4

Je peux reproduire ceci et obtenir le même message d'erreur. Toutefois, riscv64-unknown-elf-objdump renvoie 0 et le fichier de sortie contient un vidage d'assembleur sans pseudo-instructions et/ou avec des noms de registre numériques, comme demandé par l'option. Donc, il semble que cela fonctionne comme prévu, il sort juste un message d'erreur irritant.

Le repo riscv-tools n'a pas été mis à jour depuis février J'ai également essayé ceci avec une version plus récente de riscv-gnu-toolchain et ici je ne reçois pas le message d'erreur. Donc, je dirais que c'est un bug non critique qui a déjà été corrigé dans riscv-gnu-toolchain et donc il sera corrigé dans riscv-tools dès que riscv-gnu-toolchain est mis à jour là.

0

Vous avez raison, j'obtiens le message d'erreur, mais quand je regarde le vidage de l'assembleur, les noms de registres numériques et les instructions non-pseudo sont visibles dans le fichier. Merci d'avoir signalé qu'il s'agit d'un message d'erreur trompeur en cours d'impression ...