Ce este un “ addend ”

De la Learning Linux Binary Analysis de Ryan „elfmaster” O „Neill . Pe pagina 32, autorul afirmă,

Înregistrările de relocare pentru fișierele ELF pe 32 de biți sunt aceleași ca pentru 64 de biți, dar utilizați numere întregi de 32 de biți. Următorul exemplu pentru codul fișierului obiect va fi compilat ca 32 de biți, astfel încât să putem demonstra completări implicite, care nu sunt la fel de frecvent utilizate în 64 de biți. Un addit implicit apare atunci când înregistrările de relocare sunt stocate în structuri de tip ElfN_Rel care nu conțin un r_addend și, prin urmare, suplimentul este stocat în ținta de relocare în sine. Executabilele pe 64 de biți tind să folosească structurile ElfN_Rela care conțin un addend explicit . Cred că merită să înțelegem ambele scenarii, dar completările implicite sunt puțin mai confuze, așa că are sens să aducem lumină în acest domeniu.

Ce este definiția reală a unui „addend” ?

Comentarii

Răspuns

Cred că înseamnă doar „un număr care a fost adăugat” și, în acest caz, „numărul care a fost adăugat la adresa de încărcare de bază ( sau adresa de încărcare a segmentului) pentru a calcula indicatorul final pentru această relocare „.

Să ne imaginăm că atunci când încărcăm binele în memorie la 0x400000 avem un indicator la 0x401234 care indică 0x405678. (Dacă în schimb am încărcat binarul la 0x800000, atunci acesta ar trebui să indice 0x805678, deci trebuie să se mute.) Nu știu ELF, dar citirea mea este că

  • în t În cazul implicit, tabela de relocare stochează doar compensări în binarul dvs., în acest caz 0x1234, iar în binarul nostru la offset 0x1234 stocăm offsetul țintă 0x5678. Prin urmare, relocarea devine

    pentru fiecare adresă A în tabelul de relocare *(base + A) += base

    funcționează tabelele de relocare în fișierele PE.)

  • în cazul explicit, tabela de relocare stochează atât offset-ul în binarul dvs., cât și offset-ul țintă, adică 0x1234 0x5678. Deci, relocarea aici este

    pentru fiecare pereche de adrese A, B în tabelul de relocare *(base + A) = base + B

    Nu știu ce se întâmplă în binar la offset 0x1234 în acest caz.

Răspuns

  • Augend este un termen care înseamnă un număr care poate fi adăugat
  • Addend este numărul pe care îl veți adăuga.

De la Dictionary.com ,

Te-ai trezit vreodată cu ochii pe o bucată de hârtie cu„ 3 + 4 ”Scris pe el și ne-am întrebat„ care este termenul potrivit pentru fiecare dintre aceste două cantități respective? ”Nu? Primul număr este augend și numărul care i se adaugă este addend.

Puteți vedea o diagramă a altor termeni matematici aici pe Wikipedia „” Rezultatele calculului „ ,

Rezultatele calculelor

De ce termenii speciali de aici?

Răspuns

Addend este pur și simplu „un număr care trebuie adăugat la altul „, conform Merian Webster .

Comentarii

  • A fost afirmată deja în răspunsul existent. Ați putea adăuga ceva mai mult la răspunsul dvs. pentru a-l face mai informativ.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *