DMS_
(usa elementary OS)
Enviado em 31/10/2011 - 09:36h
Na verdade, voce pode "aprender" assembly, depurando seus códigos mais simples, instale o gdb GNU debugger, bom, não sei se você já tinha ouvido falar de debugger, se é programador concerteza ouviu, pois como já disseram, "um programador que nunca usou um debugger é como um médico do século XX que nunca usou um microscópio".
O legal do assembly é que se você dominar, independente da linguagem, JAVA, C, Python, tudo no final vira assembly, assembly é o que de fato será executado pelo processador, o código é feito para ser compilado, ele na forma crua de nada vale.
Pegue um programa helloWorld.c compile-o
$ gcc -g helloWorld.c
$ gdb -q ./a.out
(gdb) set disassembly-flavor intel //sintaxe Intel é muito mais fácil de se aprender
(gdb) disassemble main
Assim será mostrado a função main depurada.
Ou usar o objdump:
# objdump -M intel -D a.out | grep -A20 main.: //Mostra funções após a experessão regular main, 20 linhas no max
Já que não consegui postar o texto aqui, pois ficava tudo bagunçado, segue como imagem:
http://imageshack.us/photo/my-images/225/capturaroz.jpg/
Um exemplo que eu usei/uso para entender melhor, é o seguinte
Digamos que tenhamos um Jogo: Grand Chase, o dano do personagem é guardado em algum lugar correto? E como nós não temos acesso ao código do jogo, não podemos ver as variáveis que ele contém, porém, ele está sendo executado em nosso computador, a linguagem de máquina do jogo está atuando em nosso processador, resumindo.
Estes hacks que você ver por ai, não é nada além de manipulação de endereços de memória
mov esp,ebp
Mova o valor de ebp para esp, assim eles conseguem alterar o danos de jogos, tinha um hack no GC que o personagem hitava 999 xD. Enfim, isso é bem ao pé da letra, citei isso para um entendimento melhor, estou aprendendo assembly também, é bem legal hehe, só que o chato é que se você aprender assembly sintaxe intel, quando vai ver outra sintaxe fica meio complicado. mas é isso ae abraço!
shirglei escreveu:
cara, eu programo um pouco em assembly na arquitetura 8088 ( bem antiga) mas sinceramente se vc não for desenvolver processadores, placas,, hehehe é perda de tempo, aprenda C++, Java, Ruby, etc....é isso que o mercado quer.
Discordo, aprender Latim também irá trazer algum conhecimento, e ajudar a entender a origem de algumas palavras em português, capisco? :)