Logo Hardware.com.br
djenir
djenir Novo Membro Registrado
2 Mensagens 0 Curtidas
#32 Por djenir
09/07/2006 - 21:06
tenho um programa em assembler que desliga um equipamento ligado a uma porta serial isso no windows, gostaria que esse programa funcionasse em linux, pode ser em c

esse é o codigo:

mov dx,03fc
mov ax,0001
out dx,ax

pronto, só isso faz o serviço, mas no linux não consigo entrar com o codigo, tentei

__asm mov edx,03fc;
__asm mov eax,0001;
__asm out dx,ax;

e dá um monte de erros.
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#33 Por jqueiroz
10/07/2006 - 14:39
djenir, o modelo de programação assembler do Linux é COMPLETAMENTE diferente do modelo de programação assembler do Windows. Pra começar, nenhum programa comum pode fazer acesso direto ao hardware: só os módulos do Kernel podem fazer isso.

Acredito que o que você quer fazer pode ser feito por "ioport()" no dispositivo serial em questão.


Pelo que eu consegui entender, você está jogando um valor na porta de controle da serial COM1 (/dev/ttyS0 do Linux). Você sabe quais sinais da serial essa instrução ativa/desativa???
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
cwars
cwars Novo Membro Registrado
9 Mensagens 0 Curtidas
#35 Por cwars
02/07/2007 - 19:18
Para quem quer aprender assembly tanto para Linux, Windows e outro SO qualquer, procurem no Google por "The Art of Assembly" considerado por todos como o melhor livro sobre assembly e tem justamente para Windows e para Linux, dando suas referencias e exemplos (além que é gratuito e pode ser baixado livremente).

Detalhe o livro tem mais de 1000 páginas sendo referencia para apenas o 8086 e além de ser totalmente inglês.

Mas sinceramente, quem duvida que um compilador não consegue ter eficiencia de 90% de otimização de código, deveria conhecer o llvm que é um máquina virtual para compilação, quer dizer, o desempenho dessa maquina é tamanha que ela gera códigos mais otimizados que muitos códigos assemblys feitos por programadores, detalhe o que eu disse agora não é invenção até porque fizeram testes comparando um código gerado pelo llvm com um código programado na mão em assembly.

O LLVM (Low Level Virtual Machine) funciona com a mesma idéia do .NET só que para hardware, de forma que faz sucessíveis otimizações no código, como sendo um framework para código de baixo nível, ele tem capacidade de compilação e montagem de vários processadores diferentes. E além que para compilação intermediárea você compila para uma linguagem intermediária de baixo nível, não com o objetivo de gerar código multiplataforma, mas de gerar back ends para vários compiladores e linguagens, até agora existem back ends para C, C++ e FORTRAM; e pretendem agora fazer um back end para a linguagem Python e quantas forem as linguagens que quiserem.

Detalhe o llvm é um compilador para gcc (que agora significa GNU Compiler Colection), e já está tendo o apoio de diversas empresas.

O foco desse projeto é de justamente o programador não se importar com o assembly e sim programar de alto nível, deixando esse trabalho para o compilador, pois avaliando a situação do assembly hoje em dia é bem mais simples e lucrativo que a máquina virtual de compilação conheça as mais de 1000 instruções de assembly e não necessáriamente o programador, quem quiser aprender e usar assembly é mais vantajoso aplicar isso nessa máquina virtual criando seus back ends e aprendendo o assembly do llvm que é bem mais simples do que aprender o assembly da Intel, Mac e entre outros.

para maiores detalhes sobre o llvm digita no Google que é logo a primeira pagina (www.llvm.org).
FabianoTraple
FabianoTrapl... Veterano Registrado
1.2K Mensagens 17 Curtidas
#36 Por FabianoTrapl...
02/07/2007 - 21:47
Veja o lado interessante...

Para quem gosta de criar virus e fazer modificações de instruções dos executáveis para pular aquelas perguntas chatinhas de senhas por exemplo o assembler é muito útil...

Um código escrito em assembler é sempre muito mais enxuto que um escrito em C, porém a maioria dos programadores de assembler só programam parte do código em assembler, criando algumas poucas funções de acesso direto ou que exijam extrema velocidade.

Aprender assembler é facinho, difícil é você entender o funcionamento completo de um computador. Você terá que aprender sobre registradores, sobre paginação de memória, sobre canais de transmição de dados (DMA), armazenamento de dados, eletrônica, essas coisinhas todas...
[email]umbrsuporte@hotmail.com[/email] bebi_demais.gif
cwars
cwars Novo Membro Registrado
9 Mensagens 0 Curtidas
#38 Por cwars
04/07/2007 - 07:43
Como o próprio nome diz: Montar, então basicamente o assembly é na realidade uma montagem de componentes, por este motivo é dificil, pois você precisa conhecer o hardware para usar assembly e o pior de tudo quando termina o código simplesmente você nem sabe o que escreveu.

Mas sobre essa parte de virus, não é necessário ter conhecimentos de assembly para se montar um virus (Windows), pois virus nada mais são do que falhas de segurança e portas do sistema abertas a chamadas as quais o próprio sistema não sabe (diga-se de passagem: Virus só existem no mundo Windows e derivados, além do Dos também), desta forma se você quer passar um virus para um computador de outra pessoa, você precisará conhecer o sistema operacional do seu alvo e ter conhecimento de sockets (quer dizer transmissão de arquivos por rede) já que os virus possuem isso como base.

Mas para o mundo Unix não existem virus, mas backdoors o que são totalmente diferentes.
FabianoTraple
FabianoTrapl... Veterano Registrado
1.2K Mensagens 17 Curtidas
#39 Por FabianoTrapl...
04/07/2007 - 08:08
cwars...

E cavalo de troi é o que então, eu não necessito somente de uma porta aberta ou de um defeito do sistema para fazer um virus !
Eu posso alterar a estrutura de uma biblioteca, driver, uma dll para fazer o que ela deve fazer e ao mesmo tempo fazer o que eu quero, e isso pode ser feito tanto para windows como para linux.

Essa historinha de que linux não pega virus é para boi durmi, a única coisa que vai ser mais difícil é detonar a máquina toda usando um virus no linux, por causa de seu sistema de segurança de ascesso aos arquivos, não esuqeça também que para instalar a maiorias dos programas no linux você deve digitar a senha de root, e se esse programa estiver bombado, já era, adeus proteção do linux.

big_green.png
[email]umbrsuporte@hotmail.com[/email] bebi_demais.gif
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal