Foros del Web » Programación para mayores de 30 ;) » Programación General »

Asm

Estas en el tema de Asm en el foro de Programación General en Foros del Web. Hola. asm (language assembler o lenguaje ensamblador) varía de cada distro de windows? (xp, vista, 7, etc.) asm (language assembler o lenguaje ensamblador) varía de ...
  #1 (permalink)  
Antiguo 28/03/2010, 05:51
x06
 
Fecha de Ingreso: marzo-2010
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Asm

Hola.

asm (language assembler o lenguaje ensamblador) varía de cada distro de windows? (xp, vista, 7, etc.)
asm (language assembler o lenguaje ensamblador) varía de cada distro de linux?????? (redhat, suse, ubuntu, xubuntu, kubuntu, etc.)


Graciassssssss. :p
  #2 (permalink)  
Antiguo 28/03/2010, 12:37
 
Fecha de Ingreso: marzo-2010
Mensajes: 31
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Creo que estás un poco confundido. El asm(assembly, que no assembler) es la representación conceptual directa del código máquina. El asm es un lenguaje de instrucciones simples para entendimiento humano, estas tienen una traduccion directa al código máquina que es el código binario que interpreta/ejecuta el procesador. El código máquina viene a ser como asignarle un número a cada instruccion asm.
El linux está programado generalmente en C, este es traducido como todos los lenguajes compilados a código máquina(o sea asm). Pero el asm cambia de máquina en máquina. Un programa compilado para un pentium 4 puede no correr en un 386, pero al revés sí, por compatibilidad hacia atrás.
Así que no sé, esa pregunta no tiene mucho sentido.
De todos modos esto lo trae la wikipedia o cualquier otro sitio en la web.
  #3 (permalink)  
Antiguo 28/03/2010, 13:22
x06
 
Fecha de Ingreso: marzo-2010
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Cita:
Iniciado por biribau Ver Mensaje
Creo que estás un poco confundido. El asm(assembly, que no assembler) es la representación conceptual directa del código máquina. El asm es un lenguaje de instrucciones simples para entendimiento humano, estas tienen una traduccion directa al código máquina que es el código binario que interpreta/ejecuta el procesador. El código máquina viene a ser como asignarle un número a cada instruccion asm.
El linux está programado generalmente en C, este es traducido como todos los lenguajes compilados a código máquina(o sea asm). Pero el asm cambia de máquina en máquina. Un programa compilado para un pentium 4 puede no correr en un 386, pero al revés sí, por compatibilidad hacia atrás.
Así que no sé, esa pregunta no tiene mucho sentido.
De todos modos esto lo trae la wikipedia o cualquier otro sitio en la web.
:l

umm! sí, perdona, me confundi con el lenguaje de máquina...

o sea, que no vale la pena que aprenda ASM porque cambia de máquina a máquina?

o se programan diferente? porque sinó sería imposible hacer drivers para hardwares.
  #4 (permalink)  
Antiguo 28/03/2010, 13:48
 
Fecha de Ingreso: marzo-2010
Mensajes: 31
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Cambia de máquina a máquina, pero suelen ser parecidas, o compatibles hacia atrás entre arquitecturas. Si aprendes ensamblador del 386 podrás programar para tu pentium 4, porque ambos son arquitectura Intel, IA-32. De todos modos todos los ensambladores son muy fáciles y simplones(en su programación más sencilla). mov r0, r2 lo encontrarás en todos, y los saltos también. No viene mal saber ensamblador hombre, si quieres programar drivers o sistemas, pero la mayoría se hará en C(aunque no sea portable el código que se haga, sólo porque es mucho menos error-prone y leible, un if-else es mucho más sencillo que 2 etiquetas y 2 saltos). Ten en cuenta que con ensamblador el control de la máquina es máximo, casi completo, desde luego lo máximo que ella permite. Si algo no se puede hacer con ensamblador no se puede hacer con nada...
Los drivers suelen ir en C+asm
Te aconsejo que aprendas asm si quieres aprender sobre programación de sistemas, si solo te interesa hacer programas "grandes y/o complejos" vete a un lenguaje de alto nivel, estudia orientacion a objetos por ejemplo.
  #5 (permalink)  
Antiguo 28/03/2010, 14:05
x06
 
Fecha de Ingreso: marzo-2010
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Cita:
Iniciado por biribau Ver Mensaje
Cambia de máquina a máquina, pero suelen ser parecidas, o compatibles hacia atrás entre arquitecturas. Si aprendes ensamblador del 386 podrás programar para tu pentium 4, porque ambos son arquitectura Intel, IA-32. De todos modos todos los ensambladores son muy fáciles y simplones(en su programación más sencilla). mov r0, r2 lo encontrarás en todos, y los saltos también. No viene mal saber ensamblador hombre, si quieres programar drivers o sistemas, pero la mayoría se hará en C(aunque no sea portable el código que se haga, sólo porque es mucho menos error-prone y leible, un if-else es mucho más sencillo que 2 etiquetas y 2 saltos). Ten en cuenta que con ensamblador el control de la máquina es máximo, casi completo, desde luego lo máximo que ella permite. Si algo no se puede hacer con ensamblador no se puede hacer con nada...
Los drivers suelen ir en C+asm
Te aconsejo que aprendas asm si quieres aprender sobre programación de sistemas, si solo te interesa hacer programas "grandes y/o complejos" vete a un lenguaje de alto nivel, estudia orientacion a objetos por ejemplo.

y si varían... ¿Cómo se crean?


con c++, java, phyton, etc. no puedo hacerlo?? (ASM y drivers...)

Última edición por x06; 28/03/2010 a las 14:19
  #6 (permalink)  
Antiguo 28/03/2010, 14:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 31
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

El asm es un lenguaje especial. Diferente como cualquier otro lenguaje de otros. C no es igual que java. Y ensamblador no es igual que C. Se necesita otro compilador distinto. A los compiladores de ensamblador se les llama ensambladores (assemblers), cada máquina tiene los suyos. Tu supongo que tendrás un pc, o sea un x86, hay varios ensambladores, tienes el fasm, nasm, masm, tasm, gas, hla. Suelen incorporar mas cosas como macros y acceso a librerías e incluso algunas conveniencias de alto nivel. Para mezclarlo con otro lenguaje compilado, como C, busca por inline assembly(se dice que el ensamblador es metido inline), por ejemplo si usas el de gnu, busca gcc inline assembly. Usa otro formato de instruccion, el AT&T, el más normal y cómodo es el formato intel(para mí al menos), el gas es AT&T(de hecho es el que usa gcc) los otros intel, aunque cambia algo entre ellos. Creo que usabas linux, pues puedes usar el nasm. Busca tutoriales de ensamblador para linux, pero los programas que hagas no serán portables entre sistemas operativos distintos. Si quieres usar ensamblador portable, usa los inlines de los lenguajes, y haz las llamadas al SO a través de las interfaces de alto nivel. En pascal es muy facil meter inline assembly asi como en c, tienes un compilador llamado freepascal.

La otra forma de mezclar es por modulos, haces tus modulos asm, y tus modulos en otro lenguaje compilado a máquina, los linkas con ld por ejemplo, pero esto no recuerdo muy bien, tienes que exportar nombres.

Lo más fácil? nasm en linux, fasm, masm o tasm en windows, inline visual c en windows tambien es facil y pascal inline tambien en ambos, gcc inline es lo mas feo para mi, odio ese maldito formato.
Si quieres algo para aprender de cero como funciona una máquina, buscate un simulador grafico con su propio ensamblador, o incluso, asm 16-bits en ms-dos, pero no te valdrá para nada. Tambien hay algun so hecho en asm por completo, educativo, pero si no sabes te costará, creo que era menuetos. Instálatelo en una maquina virtual y experimenta!
Suerte!
  #7 (permalink)  
Antiguo 28/03/2010, 14:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 31
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Java es compilado pero no a código máquina sino a seudocódigo interpretado por una máquina virtual, tiene su propio ensamblador que no merece la pena estudiarlo si no vas a hacer un compilador.
Python es interpretado, pero creo que había una librería para ejecutar codigo máquina, si es que este lenguaje tiene de todo en cuanto a librerias, porque el lenguaje en sí es caca.
  #8 (permalink)  
Antiguo 29/03/2010, 07:36
x06
 
Fecha de Ingreso: marzo-2010
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

XDxdxdxdxdxd

Última edición por x06; 30/03/2010 a las 00:27
  #9 (permalink)  
Antiguo 29/03/2010, 16:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 31
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Sugiero que te pongas a programar y dejes de filosofar sobre esto. Te sugiero que te esfuerces un poco mas leyendo las respuestas y googleando. No voy ni creo que nadie se vaya a poner a darte clases particulares.
Una cosa es aclarar una duda y otra responder a un interrogatorio de cosas que no tienen que ver las unas con las otras. O no te has esforzado en entenderlo, y buscar sobre ello(porque te he dado bastantes referencias) o muy mal me explico, en cuyo caso no merece la pena que yo siga contestándote porque seguirías sin entenderlo.
Doy por cerrado el tema.

P.D.: Es como si yo preguntase en un foro de aeromodelismo: Cuanto se tardaría en enviar un cohete a la Luna... Y CÓMO PODRÍA HACERLO?
  #10 (permalink)  
Antiguo 30/03/2010, 00:26
x06
 
Fecha de Ingreso: marzo-2010
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Asm

Cita:
Iniciado por biribau Ver Mensaje
Sugiero que te pongas a programar y dejes de filosofar sobre esto. Te sugiero que te esfuerces un poco mas leyendo las respuestas y googleando. No voy ni creo que nadie se vaya a poner a darte clases particulares.
Una cosa es aclarar una duda y otra responder a un interrogatorio de cosas que no tienen que ver las unas con las otras. O no te has esforzado en entenderlo, y buscar sobre ello(porque te he dado bastantes referencias) o muy mal me explico, en cuyo caso no merece la pena que yo siga contestándote porque seguirías sin entenderlo.
Doy por cerrado el tema.

P.D.: Es como si yo preguntase en un foro de aeromodelismo: Cuanto se tardaría en enviar un cohete a la Luna... Y CÓMO PODRÍA HACERLO?


Y CÓMO HACERLO JAJAJAJ que chistoso xDD


Sólo dime;

¿Hay algún Linux hecho con C++?

¿Para ejecutar mis programas en otro PC, este debe tener Java instalado, verdad? Sí. Y ésto.. ¿Cómo hacerlo xD? Digo... yo tengo una aplicación creada por mi en Java, ahora cómo hago que en otro PC funcione?? se descarga la JVM y qué hace después?


¿Cuánto tardarían en traer la nueva versión de C++ a Linux? :( quiero ese! no el c++!!

Última edición por x06; 31/03/2010 a las 09:02

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:20.