Jump to content
filip_e

A linguagem Assembly

Recommended Posts

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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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


Citação

A ironia é o primeiro indício de que a consciência se tornou consciente.

 

Share this post


Link to post
Share on other 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 ...

Share this post


Link to post
Share on other sites
Triton

Concordo com o zzee, se querem começar a brincar com Assembly, comecem com a arquitectura MIPS.


<3 life

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
TheDark

actualmente, a PS3 usa a arquitectura PowerPC.

...que é RISC. Tal como a Wii e a XBox360.


Desaparecido.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.