jmpq
è solo un salto non condizionale a un determinato indirizzo. La "q" significa che abbiamo a che fare con parole quadruple (lunghe 64 bit).
*0x402680(,%rax,8)
: questo è un modo per scrivere un indirizzo in assembly x-86. Hai ragione nel dire che di solito c'è un registro prima della prima virgola, ma continui a seguire le stesse regole se non viene specificato alcun registro.
Il formato funziona in questo modo: D(reg1, reg2, scalingFactor)
dove D sta per spostamento. Il dislocamento è fondamentalmente solo un numero intero. reg1
è il primo o il registro di base. reg2
è il secondo registro e scalingFactor
è uno di 2, 4, 8 (forse anche 1, ma non ne sono sicuro). Ora puoi ottenere il tuo indirizzo aggiungendo semplicemente i valori in questo modo: Spostamento + (valore a reg1
) + scalingFactor
* (valore a reg2
).
Non sono completamente sicuro di ciò che l'asterisco davanti all'indirizzo è per, ma la mia ipotesi è che ciò significa che il valore di spostamento è memorizzato a quell'indirizzo.
Spero che questo aiuti.
lol, ma devo saperlo così posso eseguire il debug del codice c. e anche per gli esami di classe. – de1337ed