Jump to content

Nunca entendo, o que é offset de memória?


Recommended Posts

Gente, alguém sabe falar da forma mais leiga possível (sem aqueles linguagem técnicas) o que é offset ?

Sempre que eu estou tentando estudar sistemas operacionais, memória e exploits fala-se no bendito offset:

"Ah, temos a memória na posição zero do segmento 0x242469 e temos que pular para o offset 0x242424 e bla bla bla"

Alguém sabe me explicar por metáfora o que raios é o offset do endereço de memória? Eu imagino a memoria de um PC , não sei se errado ou não, como uma planilha
do Excel , nesse caso, como seria o offset?

Grato!

Link to post
Share on other sites

"offset" é "deslocamento". Se você estiver parado onde está e se deslocar 1 metro pra frente, então está no offset +1 metro pra frente.

Com relaçẽo a "endereço de memória", se você assumir como base um endereço qualquer, um "deslocamento" de N bytes para frente é o "offset" (deslocamento) com relação a essa base. No modo real o "segmento" é essa base e, junto como ele, compondo o endereço físico, tem o "offset" (deslocamento).

  • Curtir 1
Link to post
Share on other sites
14 horas atrás, fredericopissarra disse:

"offset" é "deslocamento". Se você estiver parado onde está e se deslocar 1 metro pra frente, então está no offset +1 metro pra frente.

Com relaçẽo a "endereço de memória", se você assumir como base um endereço qualquer, um "deslocamento" de N bytes para frente é o "offset" (deslocamento) com relação a essa base. No modo real o "segmento" é essa base e, junto como ele, compondo o endereço físico, tem o "offset" (deslocamento).

Me parece muito boa a sua metáfora, deixa eu ver se eu entendi:  se eu tenho uma estrada de 100KM que começa em São Paulo e vai até Santos, se eu estou no KM 50 dela
e percorro mais 2 KM , o  endereço de memória seria 0x50 e o offset seria 0x02 ?  OU seja, um incremento relativo? Estou errado?

Link to post
Share on other sites
9 horas atrás, chacrinha disse:

Me parece muito boa a sua metáfora, deixa eu ver se eu entendi:  se eu tenho uma estrada de 100KM que começa em São Paulo e vai até Santos, se eu estou no KM 50 dela
e percorro mais 2 KM , o  endereço de memória seria 0x50 e o offset seria 0x02 ?  OU seja, um incremento relativo? Estou errado?

Na analogia da estrada, onde é o KM 0? São Paulo? Esse é o offset 0, se você está no km 50, está no offset 50, ao andar mais 2 km, vai pro offset 52.
Note que não existe apenas ESSA estrada. O offset, no exemplo, é medido em relação a ESSA referência, mas existem outras referências pelo mundo afora.

No caso do modo real, um "endereço de memória" é especificado com um par de valores: SEGMENTO e OFFSET. O segmento te dá o endereço base e o offset te dá o deslocamento dentro desse segmento... No modo real, bloco do segmento sempre tem 64 KiB de tamanho (e o offset também).

Link to post
Share on other sites
Em 14/10/2020 em 08:09, fredericopissarra disse:

SEGMENTO e OFFSET. O segmento te dá o endereço base e o offset te dá o deslocamento dentro desse segmento... No modo real, bloco do segmento sempre tem 64 KiB de tamanho (e o offset também).

Bom, voltei a não entender. Você conhece aqueles jogos de tabuleiro onde joga-se os dados para ver quantas casas o competidor avança? Tipo esse dessa imagem: https://br.pinterest.com/pin/330592428889640183/

O segmento seria o número da casa onde o competidor está e o offset é a diferença onde ele está e o número que o dado sorteia para ele avançar?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...