Logo Hardware.com.br
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#17 Por jqueiroz
22/04/2006 - 00:33
cesarbs
jqueiroz, concordo com o que tu disseste. Só acho que tambpem existe uma coisa: diversão. Pode não ser mais necessário programar em ASM em praticamente qualquer stiuação, mas ainda assim muita gente gosta de se divertir programando. Por isso eu não acho legal já sair "desestimulando" alguém que queira aprender isso

Sabe qual é o problema, cesarbs? É que eu vejo gente que não tem experiência em programar em alto nível, querendo programar assembly... me desculpem os colegas, quem quiser tentar que tente, mas é mais ou menos como o cara ter acabado de tirar carteira de motorista e querer dirigir um carro de corrida...

... ou como já foi título de um tópico desta sala: "Ainda não sei andar, mas quero correr".
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
cesarbs
cesarbs Membro Senior Registrado
549 Mensagens 0 Curtidas
#18 Por cesarbs
22/04/2006 - 01:08
Bom, isso é verdade. Aí eu entendo. Mas normalmente quando eu vejo que o cara não tá pronto eu não digo nada, deixo que se conta disso. Isso porque foi assim comigo: mesmo tendo começado a programar bem cedo, eu queria fazer demais. Mas nunca entendia nada, nunca entendia "bah mas como é que os caras fazem tanta coisa". Hoje eu sei bem mais e muitas das coisas que eu achava misteriosas não são nada difíceis pra mim, mas eu reconheço que antes estava errado. Queria saber criar um SO sem saber como funciona um processador, por exemplo.
César B. S.

http://cesarbs.wordpress.com
Linux user #365512
DCNunes
DCNunes General de Pijama Registrado
1.8K Mensagens 404 Curtidas
#19 Por DCNunes
27/04/2006 - 02:46
cesarbs
Hoje em dia um programador tem que ser muito bom (mas MUITO bom mesmo!) pra conseguir gerar código mais otimizado do que o código gerado por um compilador com otimizações ativadas.

Na minha opinião quem vai programar a sério em assembly precisa ter justamente o objetivo de superar o compilador. Não pode haver meio termo, não se deve programar em assembly pra quebrar galho. Se for pra quebrar galho é melhor programar em alto nível.

É claro que leva tempo até a pessoa memorizar o comportamento das instruções. Eu por exemplo saí do Pascal para o assembly e fiquei surpreso que o processador não soma duas variáveis que estejam na memória RAM com uma única instrução. :lol:

Eu não confio tanto assim em compiladores. Duvido muito que eles aproveitem todo o potencial do processador (por exemplo, fazer uso decente de instruções SIMD), mesmo quando instruídos a fazer isso.

Eu não tenho Linux e gcc instalado aqui. Se alguém aí puder postar algum código pesado (mas pequeno) em alto nível e depois com a tradução pra assembly eu posso tentar comprovar essa minha tese. :mrgreen:

E ao profeta_livre, boa sorte. Recomendo esse documento da AMD. Apesar da maior parte do material ser dedicado ao Athlon, tem muitas orientações que vão ser benéficas em qualquer processador:
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25112.PDF
profeta_livre
profeta_livr... Super Participante Registrado
958 Mensagens 0 Curtidas
#20 Por profeta_livr...
27/04/2006 - 13:48
IronManDCN obrigado pela dica.. quero aprender justamente assembler para ter este tipo de visão, do comportamento da memória, processador, para que assim eu posso me tornar um melhor programador.

achei um tutorial que já me fez entender par acomeçar a engatinhar com assembler, estou agora utilizando o nasm no linux para compilar ....



http://docs.cs.up.ac.za/programming/asm/derick_tut/
lidyon
lidyon Tô em todas Registrado
2K Mensagens 10 Curtidas
#21 Por lidyon
27/04/2006 - 15:29
cesarbs
Hoje em dia um programador tem que ser muito bom (mas MUITO bom mesmo!) pra conseguir gerar código mais otimizado do ...


Realmente , o cara tem que ser um deus do assembly para superar o compilador com as flags para otimização ativadas . Principalmente se se tratar do gcc!

Talvez valha a pena aprender se for utilizar engenharia reversa. Mas em outro caso é recomendável usar c/c++ e otimizar na compialção ... t++++
Slackware GNU/Linux 13.0
Linux User #372970

# cd /Brasil/Congresso
# rm -f ./Camara/* ./Senado/*
# echo "yuhuuuuuuuuu"
Rui_Carlos
Rui_Carlos Veterano Registrado
1.3K Mensagens 17 Curtidas
#22 Por Rui_Carlos
27/04/2006 - 16:32
lidyon
Realmente , o cara tem que ser um deus do assembly para superar o compilador com as flags para otimização ativadas . ...


se pegarmos num programa assembly gerado no gcc com optimizações não é assim tão díficil de o melhorar (ligeiramente); numa disciplina que tive na Universidade (Arquitectura de Computadores) o meu professor chegou a dar alguns exemplos "típicos" de optimizações que em certos programas podiam ser feitas...

convém recordar que um compilador não tem inteligência e, sobretudo, não conhece o "contexto" em que o programa se enquadra tão bem como nós, que o estamos a construir.
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#23 Por jqueiroz
27/04/2006 - 20:38
IronManDCN
Eu por exemplo saí do Pascal para o assembly e fiquei surpreso que o processador não soma duas variáveis que estejam na memória RAM com uma única instrução.

É porque seu processador não é ortogonal. Um processador totalmente ortogonal teria uma instrução

add [r1],[r2],[r3]

que faz o equivalente a

*r1 = *r2 + *r3

em C.


Eu não confio tanto assim em compiladores. Duvido muito que eles aproveitem todo o potencial do processador (por exemplo, fazer uso decente de instruções SIMD), mesmo quando instruídos a fazer isso.

E não aproveitam mesmo... esse tipo de otimização, quando existe, é inserida dentro das bibliotecas do sistema. Até pq assim, vc não precisa reescrever o código do compilador a cada nova sigla que o fabricante do processador inventa, pra tentar ganhar mercado dos concorrentes... ou você acha que o Borland Pascal tem versões diferentes pra processadores com ou sem MMX, com ou sem SSE, etc, etc???

Rui_Carlos
se pegarmos num programa assembly gerado no gcc com optimizações não é assim tão díficil de o melhorar (ligeiramente); numa disciplina que tive na Universidade (Arquitectura de Computadores) o meu professor chegou a dar alguns exemplos "típicos" de optimizações que em certos programas podiam ser feitas...

convém recordar que um compilador não tem inteligência e, sobretudo, não conhece o "contexto" em que o programa se enquadra tão bem como nós, que o estamos a construir.

Olha só, Rui_Carlos, dá pra fazer bastante coisa nesse ponto, e não chega nem a ser necessário que "o compilador" seja inteligente. Quem tem que ser são os desenvolvedores dele. :lol: Há técnicas, com explicação e provas formais, pra você detectar e aplicar otimizações de código, que inclusive não precisam ficar restritos a um único comando, mas levar em conta todos os comandos de um bloco.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
DCNunes
DCNunes General de Pijama Registrado
1.8K Mensagens 404 Curtidas
#24 Por DCNunes
28/04/2006 - 03:11
jqueiroz
É porque seu processador não é ortogonal.

Tem razão, não me expressei muito bem. É que quando eu estava no Pascal (e não tinha estudado muito sobre arquitetura de computadores) tinha a impressão de que todas as variáveis declaradas estavam na RAM (se bem que o velho Turbo7 devia fazer isso mesmo). Depois soube como os processadores acessam a memória, e que uns podem usar operandos memória/memória, ou como você disse.

jqueiroz
E não aproveitam mesmo... esse tipo de otimização, quando existe, é inserida dentro das bibliotecas do sistema. Até pq assim, vc não precisa reescrever o código do compilador a cada nova sigla que o fabricante do processador inventa, pra tentar ganhar mercado dos concorrentes

Aí vai depender do tipo de programa que se está fazendo. Eu só usei o exemplo das instruções SIMD pra ilustrar. Mas também existem outras instruções úteis (como as que foram introduzidas com o Pentium Pro), das quais qualquer aplicativo pode se beneficiar. Aí eu poderia criar meu programa com um módulo 386, módulo PPro, ou então fazer uma versão só e adotar como requisito para funcionamento um processador que execute um certo conjunto de instruções.

Mas se eu fosse um desenvolvedor de jogos, de plugin pra tratamento de imagens ou conversão de formato de vídeo, eu iria querer o melhor compilador disponível (com direito a MMX, SSE1 e 2), e o desenvolvedor que se vire pra fazê-lo. :mrgreen:

jqueiroz
ou você acha que o Borland Pascal tem versões diferentes pra processadores com ou sem MMX, com ou sem SSE, etc, etc???

O Turbo Pascal que eu usava só tinha capacidade de gerar código para 8086 ou 80286 (que tem mais instruções). Não sei que opções o Delphi tem sobre SIMD, instruções do Pentium Pro, etc...
mandoeletronica
mandoeletron... Novo Membro Registrado
29 Mensagens 0 Curtidas
#25 Por mandoeletron...
29/04/2006 - 12:13
Será que ainda existe livro sobre o assunto?
Eu fiquei um tempão procurando em 'sebos' e não achei!
Achei apenas uns engraçadinhos
que riram de mim até eu dobrar a esquina...
---- Mas falando sério, eu tenho interesse no Assembly para programar Micricontroladores,
Só não achei um tutorial que descrevesse de forma " clara " as coisas, pois todos falam como
se o leitor já fosse expert. Aliás já vi que não vai ser moleza não
:mrgreen:
Abraços a todos.
eek.png Mando-(Prof.Pardal)
Atlon 1200, 256Mb, 40Gb+Pinguin 6
profeta_livre
profeta_livr... Super Participante Registrado
958 Mensagens 0 Curtidas
#29 Por profeta_livr...
08/05/2006 - 13:44
programar em assembler no linux é bem simples, basta para isso ter o com pilador nasm -> http://nasm.sourceforge.net/doc/html/nasmdoc0.html para assembler instalado e ir procurando alguns tutoriais

estou utilizando esses

http://asm.sourceforge.net/
http://www.numaboa.com.br/informatica/assembly/

Uma coisa que acho interressante comentar e que o assembler tá me dando uma visão que eu não tinha, como uso da memória , processador, e control adores ... neste site também -> www.eletronica.org tem alguma coisas int erresantes...

agora como eu quero também escrever o driver de meu modem, este livro qu e me foi indicado aqui no forúm tem na net

http://www.xml.com/ldd/chapter/book/index.html


e é isso ai! valeu pela ajuda!
DCNunes
DCNunes General de Pijama Registrado
1.8K Mensagens 404 Curtidas
#30 Por DCNunes
09/05/2006 - 20:42
profeta_livre, esse artigo do www.numaboa.com.br eu não conheço, mas conheço o original, Art of Assembly, de Randall Hyde.

Lembro que o primeiro livro de assembly que eu peguei foi um do Peter Norton, ele era como um grande tutorial para montar um editor hexadecimal. Acho legal começar por tutoriais, porque os assuntos vão sendo apresentados de acordo com a necessidade. Coisas do tipo "Se acostume a fazer isso assim. Mais adiante, no capítulo x, sobre o assunto tal, você vai entender porque", porque do contrário você pode acabar perdendo o foco, pode ficar com aquela sensação de "Isso parece interessante, mas onde eu vou usar isso?". O Art of Assembly é muito bom mas recomendo algo um pouco mais direto para começar, a não ser que você tenha bastante paciência para parte teórica (a teoria é fundamental).
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal