Was ist ein “ Addend ”?

Von Lernen der Linux-Binäranalyse von Ryan „elfmaster“ O „Neill Auf Seite 32 gibt der Autor an,

Die Verschiebungsdatensätze für 32-Bit-ELF-Dateien sind dieselben wie für 64-Bit-Dateien. Verwenden Sie jedoch 32-Bit-Ganzzahlen. Das folgende Beispiel für den Code der Objektdatei wird als 32-Bit kompiliert, damit implizite Addends demonstriert werden können, die in 64-Bit nicht so häufig verwendet werden. Eine implizites Addend tritt auf, wenn die Verschiebungsdatensätze in Strukturen vom Typ ElfN_Rel gespeichert werden, die keine r_addend und daher wird das Addend im Verschiebungsziel selbst gespeichert. Die ausführbaren 64-Bit-Dateien verwenden in der Regel die ElfN_Rela -Strukturen, die einen expliziten Zusatz . Ich denke, es lohnt sich, beide Szenarien zu verstehen, aber implizite Addends sind etwas verwirrender. Daher ist es sinnvoll, Licht in diesen Bereich zu bringen.

Was ist die tatsächliche Definition eines „Addends“ ?

Kommentare

Antwort

Ich denke, es bedeutet nur „eine Nummer, die“ hinzugefügt „wurde, und in diesem Fall“ die Nummer, die der Basisladeadresse hinzugefügt wurde „( oder Segmentladeadresse), um den endgültigen Zeiger für diese Verschiebung zu berechnen „.

Stellen wir uns vor, dass wir beim Laden unserer Binärdatei in den Speicher bei 0x400000 einen Zeiger bei 0x401234 haben, der auf 0x405678 zeigt. (Wenn stattdessen Wir haben die Binärdatei bei 0x800000 geladen, dann sollte dies auf 0x805678 zeigen, daher muss sie verschoben werden.) Ich kenne ELF nicht, aber ich lese dies als

  • in t Der implizite Fall, in dem die Verschiebungstabelle nur Offsets in Ihrer Binärdatei speichert, in diesem Fall 0x1234, und in unserer Binärdatei bei Offset 0x1234 speichern wir den Zieloffset 0x5678. Daher wird der Umzug

    für jede Adresse A in der Umzugstabelle *(base + A) += base

    (Dies So funktionieren Verschiebungstabellen in PE-Dateien.)

  • Im expliziten Fall speichert die Verschiebungstabelle sowohl den Versatz in Ihrer Binärdatei als auch den Zielversatz, dh 0x1234 0x5678. Die Verschiebung hier ist also

    für jedes Adresspaar A, B in der Verschiebungstabelle *(base + A) = base + B

    Ich weiß nicht, was in diesem Fall in der Binärdatei bei Offset 0x1234 steht.

Antwort

  • Augend ist ein Begriff, der eine Zahl bedeutet, die hinzugefügt werden muss
  • Addend ist die Nummer, die Sie hinzufügen werden.

Von Dictionary.com ,

Haben Sie jemals ein Stück Papier mit“ 3 + 4 „angestarrt? „Darauf geschrieben und gefragt, was ist der richtige Begriff für jede dieser beiden jeweiligen Größen?“ Nein? Die erste Zahl ist die augend und Die hinzugefügte Nummer ist das Addend.

Eine Tabelle mit anderen mathematischen Begriffen finden Sie hier auf Wikipedia s „Berechnungsergebnisse“ ,

Berechnungsergebnisse

Warum die speziellen Begriffe hier?

  • Nun, das ist wahrscheinlich, weil in der Assembly add rbi, rax das Ergebnis tatsächlich in rbi gespeichert wird. Das erste Argument zu kennen ist also nicht nur ein Argument für add, sondern das Ziel. add rax, rbi speichert das Ergebnis in rax. Wenn Assembly stattdessen mit Operatoren angezeigt würde, hätten wir „rbi += rax und rax += rbi.
  • Weil das addend ist nicht immer ein Offset, und die augend ist nicht immer die Basis. In diesem speziellen Beispiel ist „offset“ jedoch weitaus geeigneter.
  • In diesem speziellen Fall findet sich der Begriff „impliziter Versatz“ in der Tool Interface Standard (TIS) Spezifikation für ausführbares Format und Verknüpfungsformat (ELF) Version 1.2 .

    … nur Elf32_Rela -Einträge enthalten einen expliziten Zusatz. Einträge vom Typ Elf32_Rel Speichern Sie ein implizites Addend an dem zu ändernden Speicherort. Abhängig von der Prozessorarchitektur kann das eine oder andere Formular erforderlich oder bequemer sein.Folglich kann eine Implementierung für eine bestimmte Maschine je nach Kontext ausschließlich ein Formular oder eines der beiden Formulare verwenden.

Antwort

Addend ist einfach „eine hinzuzufügende Zahl zu einem anderen „, nach Merian Webster .

Kommentare

  • Es war bereits in der bestehenden Antwort angegeben. Sie können Ihrer Antwort etwas mehr hinzufügen, um sie informativer zu gestalten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.