elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Dudas varias, simples pero grandes para un noob como yo ^^
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas varias, simples pero grandes para un noob como yo ^^  (Leído 3,110 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Dudas varias, simples pero grandes para un noob como yo ^^
« en: 9 Noviembre 2009, 22:04 pm »

Hola amigos, me ha gustado ensamblador, y quiero aprender mas, en concreto son las siguientes dudas:

1- que significa que:
Código
  1. int 0x80
Llama al kernel? Que es 0x80?
2- En el siguiente codigo:
Código
  1. section .text
  2.    global _start ;must be declared for linker (ld)
  3.  
  4. _start: ;tell linker entry point
  5.  
  6. [s]mov edx,len ;message length[/s]
  7. mov ecx,msg ;message to write
  8. mov ebx,1 ;file descriptor (stdout)
  9. mov eax,4 ;system call number (sys_write)
  10. int 0x80 ;call kernel
  11.  
  12. mov eax,1 ;system call number (sys_exit)
  13. int 0x80 ;call kernel
  14.  
  15. section .data
  16.  
  17. msg db 'Hello, world!',0xa ;our dear string
  18. [s]len equ $ - msg ;length of our dear string[/s]
  19.  
se que el segundo subrallado calcula los bytes que ocupa la llamada al hola, pero como puedo especificar desde donde quiero contra bytes? Para que sirve en un hello world una lectura de este tipo si ni si quiera la expresamos en pantalla?
Que significa el primer subrallado?

3-que son:
section   .text
_start:   
section   .data

Deduzco que deben ser clases o metodos del ensamblador, pero no lo concretizo.

Muchas gracias a todos, me estais haciendo una persona bien cultivada.

Saludos


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas varias, simples pero grandes para un noob como yo ^^
« Respuesta #1 en: 9 Noviembre 2009, 22:14 pm »

1- que significa que:
Código
  1. int 0x80
Llama al kernel? Que es 0x80?

0x80 es el numero de interrupcion que sera llamada, es la elegida por Linux como interfaz para sus servicios  (los manejadores de interrupcion estan en modo Kernel).

2- En el siguiente codigo:
se que el segundo subrallado calcula los bytes que ocupa la llamada al hola, pero como puedo especificar desde donde quiero contra bytes? Para que sirve en un hello world una lectura de este tipo si ni si quiera la expresamos en pantalla?
Que significa el primer subrallado?

Los cuenta desde esa posicion, justo despues del final de msg. ¿A que lectura te referis? Solo hay una escritura en pantalla ... eso pone en el registro edx el valor de len.

3-que son:
section   .text
_start:   
section   .data

Deduzco que deben ser clases o metodos del ensamblador, pero no lo concretizo.

No, son secciones del ejecutable, la sección de codigo y la de datos mas precisamente (ver ELF y PE por ejemplo).


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Dudas varias, simples pero grandes para un noob como yo ^^
« Respuesta #2 en: 9 Noviembre 2009, 22:20 pm »

que diferencia hay entre usar un registro u otro? Vienen a ser como almacenes de memoria?

Saludos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas varias, simples pero grandes para un noob como yo ^^
« Respuesta #3 en: 9 Noviembre 2009, 22:27 pm »

que diferencia hay entre usar un registro u otro?

Existen diferentes convenciones de llamada, esto lo escribi antes sobre la de usada por los servicios de Linux:

A grosso modo en Linux se pone en eax el numero del servicio y los siguientes parametros van en ebx, ecx, edx, esi, edi y ebp.

En /usr/include/asm/ unistd.h/unistd_32.h/unistd_64.h encontraras los numeros de los servicios.



que diferencia hay entre usar un registro u otro? Vienen a ser como almacenes de memoria?

Si: registro.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Dudas varias, simples pero grandes para un noob como yo ^^
« Respuesta #4 en: 9 Noviembre 2009, 22:36 pm »

Muchas gracias!

Saludos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas varias, simples pero grandes para un noob como yo ^^
« Respuesta #5 en: 9 Noviembre 2009, 22:41 pm »

De nadas  :)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines