Ajuda com endereço de memoria.

1. Ajuda com endereço de memoria.

Paulo Vitor Missaka
missaka

(usa Linux Mint)

Enviado em 17/07/2013 - 19:45h

Galera, preciso de ajuda para entender a logica de uma simples conta que apareceu num livro que tenho aqui.

Antes de explicar melhor a duvida, ja deixo informado que sou extremamente leigo no assunto. Estou tendo os primeiros passos aqui com um livro (nao muito didatico) e minha duvida pode ate nao ter a ver com assembly, entao se eu cometer algum erro grotesco: me desculpem!

A duvida é a seguinte: a parte do livro em que estou está explicando como usar o GDB para estudar endereços de memoria de um programa qualquer. Ele explica que o tamanho padrão de um endereço de memoria é um 4-byte chamado word e que posso alterar o tamanho padrao especificando o tipo de tamanho que desejo no comando "examine" no GDB:

b = um byte
h = halfword (2 bytes)
w = word (4 bytes)
g = giant (8 bytes)

Depois ele demonstra que um mesmo endereço de memoria (no caso 0x00fc45c7) quando exibido com tamanho de 1 byte, tem a ordem invertida, igual no exemplo que estou dando abaixo (de forma resumida):

x/4xb $eip --> 0xc7 0x45 0xfc 0x00
x/1xw $eip --> 0x00fc45c7

Em hexadecimal a interpretação foi facil, o problema está quando o endereço é mostrado em decimais:

x/4ub --> 199 69 252 0
x/1uw --> 16532935

Para realizar a transformação de 4ub para 1uw ele usou a seguinte conta:

0*(256^3) + 252(256^2) + 69(256^1) + 199*(256^0) = 16532935

Foi a logica dessa conta q nao entendi! Alguem pode me explicar o que ele fez nessa conta? Só entendi que inverteu os valores de x/4ub mas o porque do conteudo entre parenteses eu nao consegui compreender.

Desculpa ai se enrolei um pouco para fazer a pergunta, mas é que queria explicar o maximo possivel o problema. Se esqueci de falar algo ou algo ficou confuso, so avisar, VLW


  


2. Re: Ajuda com endereço de memoria.

Paulo Vitor Missaka
missaka

(usa Linux Mint)

Enviado em 20/07/2013 - 11:28h

Alguem? Sei que não é bem visto upa os topicos sem resposta mas...ja to quase mandando meu diploma de economia pro lixo, 4 anos fazendo conta e nao consigo entende essa ai que parece bem basica :/ hehehehe


3. Re: Ajuda com endereço de memoria.

cr0n
_di0

(usa FreeBSD)

Enviado em 21/07/2013 - 14:31h

Qual a sua dúvida, o motivo dos valores entre parenteses ou motivo dos parenteses na operação?


4. Re: Ajuda com endereço de memoria.

Paulo Vitor Missaka
missaka

(usa Linux Mint)

Enviado em 21/07/2013 - 15:57h

hunn...os dois? heheheh queria entender como essa conta é capaz de converter os valores. um exemplo de resposta para minha duvida seria: "o autor primeiro inverte os valores porque bla bla bla, depois ele multiplica cada valor por (256^x) pois assim ele ira conseguir tal coisa".

Se falhei em explicar minha duvida novamente então ja basta saber o motivo do valores entre parenteses :)

O 256 seria o numero possivel de binarios em um byte nao? porque usar esse numero? e porque eleva-lo a 3, 2, 1 e 0?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts