Che cosè un “ addend ”?

Da Apprendimento dellanalisi binaria di Linux di Ryan “elfmaster” O “Neill . A pagina 32, lautore afferma,

I record di riposizionamento per i file ELF a 32 bit sono gli stessi di quelli a 64 bit, ma utilizza numeri interi a 32 bit. Il seguente esempio per il codice del file oggetto verrà compilato a 32 bit in modo da poter dimostrare addendi impliciti, che non sono così comunemente usati a 64 bit. Un addend implicito si verifica quando i record di rilocazione sono archiviati in ElfN_Rel strutture di tipo che non “contengono un r_addend e quindi laddend viene memorizzato nella destinazione del riposizionamento stesso. Gli eseguibili a 64 bit tendono a utilizzare le ElfN_Rela strutture che contengono un addend esplicito . Penso che valga la pena comprendere entrambi gli scenari, ma gli addendi impliciti creano un po più di confusione, quindi ha senso portare luce in questarea.

Che cosè leffettiva definizione di un “addend” ?

Commenti

Risposta

Penso che significhi solo “un numero che” viene aggiunto “, e in questo caso” il numero che “viene aggiunto allindirizzo di caricamento di base ( o indirizzo di caricamento del segmento) per calcolare il puntatore finale per questo riposizionamento “.

Immaginiamo che quando carichiamo il nostro binario in memoria a 0x400000 abbiamo un puntatore a 0x401234 che punta a 0x405678. (Se invece abbiamo caricato il binario a 0x800000, quindi questo dovrebbe puntare a 0x805678, quindi deve essere riposizionato.) Non conosco ELF, ma la mia lettura di questo è che

  • in t l caso implicito la tabella di rilocazione memorizza solo gli offset nel tuo binario, in questo caso 0x1234, e nel nostro binario alloffset 0x1234 memorizziamo loffset di destinazione 0x5678. Pertanto il trasferimento diventa

    per ogni indirizzo A nella tabella di riposizionamento *(base + A) += base

    (Questo è il modo in cui funzionano le tabelle di rilocazione nei file PE.)

  • nel caso esplicito, la tabella di rilocazione memorizza sia loffset nel tuo binario che loffset di destinazione, cioè 0x1234 0x5678. Quindi il trasferimento qui è

    per ciascuna coppia di indirizzi A, B nella tabella di riposizionamento *(base + A) = base + B

    Non so cosa va nel binario con offset 0x1234 in questo caso.

Risposta

  • Augend è un termine che indica un numero soggetto ad addizione
  • Aggiungi è il numero da aggiungere.

Da Dictionary.com ,

Ti sei mai trovato a fissare un pezzo di carta con” 3 + 4 “Scritto sopra e si è chiesto” qual è il termine corretto per ciascuna di queste due rispettive quantità? “No? Il primo numero è laugend e il numero che viene aggiunto è laddend.

Puoi vedere un grafico di altri termini matematici qui su Wikipedia “s ” Risultati di calcolo “ ,

Risultati di calcolo

Perché i termini speciali qui?

  • Beh, è probabile perché nellassembly add rbi, rax memorizzerà effettivamente il risultato in rbi. Quindi conoscere il primo argomento non è solo un argomento per add ma la destinazione; add rax, rbi memorizzerà il risultato in rax. Se invece lassembly è stato visualizzato con gli operatori, avremmo rbi += rax e rax += rbi.
  • Poiché addend non è sempre un offset, e augend non è sempre la base. Sebbene in questo esempio specifico, “offset” sia molto più appropriato.
  • In questo caso specifico, il termine “offset implicito” può essere trovato nella Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 ,

    … solo le voci Elf32_Rela contengono unaggiunta esplicita. Le voci di tipo Elf32_Rel memorizza unaggiunta implicita nella posizione da modificare. A seconda dellarchitettura del processore, una forma o laltra potrebbe essere necessaria o più conveniente.Di conseguenza, unimplementazione per una macchina particolare può utilizzare un modulo esclusivamente o uno dei due moduli a seconda del contesto.

Risposta

Addend è semplicemente “un numero da aggiungere a un altro “, secondo Merian Webster .

Commenti

  • Era già indicato nella risposta esistente. Potresti aggiungere un po di più alla tua risposta per renderla più informativa.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *