Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

filip_e

A linguagem Assembly

Mensagens Recomendadas

TheDark

isso é uma questão de bibliotecas e não da linguagem...

E eu diria que o que referiste é uma questão de sistema operativo e não de linguagem. A questão é que se fizeres um programa em assembly puro, que não recorra a chamadas do sistema operativo, tanto vai compilar e correr em windows como em linux, desde que o CPU seja o mesmo (ou da mesma família).


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

isso é uma questão de bibliotecas e não da linguagem...

E eu diria que o que referiste é uma questão de sistema operativo e não de linguagem.

não estás a ser contraditório?

mas no que se refere a sistemas operativos, C é tão portável quanto Assembly

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

isso é uma questão de bibliotecas e não da linguagem...

E eu diria que o que referiste é uma questão de sistema operativo e não de linguagem.

não estás a ser contraditório?

mas no que se refere a sistemas operativos, C é tão portável quanto Assembly

Não, porque em C acontece a mesma coisa. As bibliotecas pertencem ao sistema operativo. O método de chamadas de sistema (operativo) também. Logo, C é tão portável quanto Assembly. Não digo que seja portável a 100%, nem uma nem outra, mas que a portabilidade de um é semelhante à do outro.


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
iptleic

Boas.. eu tava a fazer um projecto em assembly e agora a fazer a parte do ritmo da simulação..

• Em ritmo normal cada passo de simulação deverá demorar 1 seg.

• Em ritmo expresso cada passo de simulação demora 0,2 seg. ou, se tal não for

atingível, o menor tempo possível

Mas eu nao sei como é que eu consigo alterar o ritmo de simulação.. :wallbash:

alguem que perceba?thank's

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bin

isso depende de muitos factores:

da velocidade do cpu host isto e a velocidade real do teu pc, e do pc simulado e do sistema operativo que tas a usar ..... mas isto tudo resume-se a uma coisa  IPS (instsasion per sencond.)

para altera isso tens ir as opções do simulador

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zzee

Boas Pessoal,

voces estão a falar de asm do ponto de vista errado,

Asm trabalha diectamente com o processador,e como ha muitos tipos de processadores vão haver varios tipos de variáveis a ter em contra.

Desde logo, de forma simples ha duas arquitecturas as CISC (Complex instruction set computer), tipo intel dos vossos pcs e as RISC(Reduced instruction set computer) existentes por exemplo nas consolas jogos axo k PS é risc.

Então ja a partir daqui sabem que muito difilmente se pode falar em portabilidade em asm no geral.

Eu penso que quem programa asm, faz um trabalho muito especializado, tem um processador à frente e trabalha objectivamente para esse processador com um objectivo muito claro(por exemplo centralinas nos carros etc...) porque se não mais vale programar em C e arranjar compiladores.

Mesmo dentro do mesmo tipo de arquitecturas ha muitas diferenças, a Intell tem as suas varias arquitecturas, siglas tipo x86 devem ser familiar, arquitectura que por sua vez é diferente da Motorola,e que po sua vez é diferente das restantes etc.

Na minha area Electrónica, um bom programador em C, deve ser capaz de refazer o codigo de forma fiel em asm, noutras áreas tal n faz tão sentido, mas para quem quiser começar, o ideal é talvez começar pela RISC ( a que tem "funções" mais simples e elementares) e da RISC a unica que conheço e que posso aconselhar é a MIPS, confirmei wikipédia é a arquitectura (notem arquitectura e não linguagem) que usam na PlayStation.

Compilador para MIPS e windows ha o PCSPIM, se não arranjarem na net podem pedir-me isso por mail pk n sei meter ficheiros aki.

Este compilador faz tudo, mostra o código maquina resultante da compilação, é o codigo asm mas em bin ou hex, com algumas tabelas facilmente descodificam isso, mostra o conteúdo da memória, onde esta o teu codigo etc, mostra obviamente o conteúdo dos registos, e tanbém da stack.

Bem para mais informações, consultem wikipédia sobre arquitecturas,convém estudar arquitecturas antes de programar,  e mais kk coisa aki n fórum o pessoal trata disso...

Saudações ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

a unica que conheço e que posso aconselhar é a MIPS, confirmei wikipédia é a arquitectura (notem arquitectura e não linguagem) que usam na PlayStation.

actualmente, a PS3 usa a arquitectura PowerPC.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MX+

Boas.. eu tava a fazer um projecto em assembly e agora a fazer a parte do ritmo da simulação..

• Em ritmo normal cada passo de simulação deverá demorar 1 seg.

• Em ritmo expresso cada passo de simulação demora 0,2 seg. ou, se tal não for

atingível, o menor tempo possível

Mas eu nao sei como é que eu consigo alterar o ritmo de simulação.. :wallbash:

alguem que perceba?thank's

Projecto de AC deste semestre :P

Foi engraçado fazer o elevador.

Sei que já nem sequer vai a tempo e deves ter lido no forum de leic, mas era mudando o valor do temporizador. Mas pronto já lá vai . D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Triton

Poderiam-me arranjar apontamnetos fixes sobre isso?

Eu escrevi um artigo para a última edição da revista PROGRAMAR, talvez ajude. :P


<3 life

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Arthur

boas, alguém sabe se há um cross-compiler para windows xp, onde se escreva em c (por exemplo), e se consiga ver o codigo respectivo em instruções mips, para correr no simulador spim?

abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

boas, alguém sabe se há um cross-compiler para windows xp, onde se escreva em c (por exemplo), e se consiga ver o codigo respectivo em instruções mips, para correr no simulador spim?

abraço

O gcc tem flags que permitem fazer isso, mas agradecia que não fizesses hijack ao tópico e iniciasses um novo.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Njay

Geralmente apenas dizemos "alto nível" ou "baixo nível", mas estas expressões já são contracções das frases completas: "alto nível de abstracção" e "baixo nível de abstracção". A palavra "abstracção" diz tudo.

Já fui um enorme fã do assembly, e cheguei até a escrever uma intro de 4KB toda em assembly para PC (que corre estupidamente depressa num PC de hoje em dia; ainda tenho algures uma página com as intros que fiz, including essa). Mas hoje em dia estou mais interessado na productividade, daí que o assembly ficou de lado. No entanto, como faço alguma programação de microcontroladores com memória de programa muito reduzida, sou obrigado a ter imenso cuidado com o espaço ocupado pelos programas. Normalmente faço-os em C (a não ser que o micro tenha uma memória mesmo muito pequena, tipo 1K), mas quando chego à fase de optimização (quando o programa já não quer caber :confused: ) aí vou analizar o código assembly gerado pelo compilador de C, e assim tomo algumas decisões na forma como uso o C, coisa que influencia o tamanho do código gerado em assembly.

Não sou apologista de se programar em assembly no dia-a-dia, por razões que já disse que outros disseram: complexo, pouco produtivo, não portável, muito difícil de manter. Mas acho que toda a gente devia aprender assembly, pois é uma linguagem que dá uma visão absolutamente única de um computador, e só tendo conhecido o assembly é que se sabe mesmo a sério o que é e como funciona um.


Blog: Tróniquices ~ Projecto: EmbeddedDreams.com

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Zuma

@Njay: Completamente verdade, a linguagem de assembly e como que se um pseudo inglês-humanês para intrepretar Opcodes. Dá uma visão de um cpu totalmente diferente.

Aqui vai mais um Snippet de Assembly (feito por mim), já que e para isso que este topico serve:

;este proc serve para fazer um print de todos CHARS-> PARA o seu valor HEX(base 16). O tamanho da string geralmente é mutável ou desconhecido
;UserName buffer-> "String alvo"
;Len Buffer -> Tamanho da string. Pode ser obtido atraves da API "lstrlenA"
;UserPrint buffer -> Resultado.
; a minha hex-string é defenida assim: "hex	 	db		"%08X",0"
xor ebx, ebx
xor eax, eax
L004:
mov eax, dword ptr ds:[userName+ebx]
bswap eax
invoke wsprintf, addr [userPrint+ebx*2],addr hex, eax
mov ecx, dword ptr ds:[Len]
add ebx, 4
Imul ecx, 2
.if ebx>=ecx
jmp L005
.elseif
jmp L004
.endif
L005:
mov ecx, dword ptr ds:[Len]
imul ecx, 2
mov dword ptr ds:[userPrint+ecx], 0

Espero que tenha sido um novo bom dado para esta parte do forum

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Zuma

Se quiserem posso també largar por aqui um  Hasher criado por mim para assembler. Chamei-lhe C-LOCK Hasher. Só não tenho a certesa se será este o topico mais acertado

.if, .endif's Etc... são instruções de alto nivel do assembler, eu curto mais de usar baixo nivel.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.