2015-06-04 1 views
8

Ich bin verwirrt über die RISC-V ABI-Register-Namen. Zum Beispiel gibt Tabelle 18.2 im "RISC-V Befehlssatzhandbuch, Band I: Benutzer-ISA, Version 2.0" auf Seite 85 an, dass der Stapelzeiger sp das Register x14 ist. Allerdings ist die AnweisungABI-Register-Namen für RISC-V Calling Convention

addi sp,zero,0 

auf 0x00000113 von riscv64-unknown-Elf-als kompilierte (-m32 keinen Unterschied machen). In binär:

000000000000 00000 000 00010 0010011 
^imm   ^rs1 ^f3 ^rd ^opcode 

Also hier sp scheint x2 zu sein. Dann habe ich ein wenig gegoogelt und die RISC-V Linux User's Manual gefunden. Dieses Dokument gibt an, dass spx30 ist.

Also was ist das? Gibt es verschiedene ABIs? Kann ich den ABI mit einer Befehlszeilenoption auf riscv64-unknown-elf-* setzen? Gibt es irgendwo einen umfassenden Tisch?

Antwort

6

Der Stapelzeiger ist jetzt x2.

Here ist die aktuelle ABI-Dokumentation, die aus der User-Level ISA specification verschoben wurde, die jetzt den gleichen Link enthält.

Die ABI wurde modifiziert, um die neue RISC-V-komprimierte Spezifikation besser unterzubringen, die die 8 am häufigsten verwendeten Register in x8-x15 nebeneinander platziert.

Hinweis: Vertrauen Sie keine IRIS non riscv.org Webseite. Quan Nguyen stellt in seiner Einführung klar, dass das "RISC-V Linux User Manual" den Portierungsprozess dokumentiert und dass die Genauigkeit NICHT garantiert ist.

+0

Diese Verbindung ist unterbrochen. Bitte aktualisiere es. –

+0

Behoben defekte Verbindung. – RicoRico