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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Operator+ Original. ¿Cómo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Operator+ Original. ¿Cómo?  (Leído 7,772 veces)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Operator+ Original. ¿Cómo?
« en: 12 Julio 2013, 04:55 am »

Mi pregunta es más que nada por curiosidad. El operador "+" de enteros por ejemplo, ¿cómo está definido de raiz? ¿O es una función ya a bajo nivel?
Por ejemplo, el operador * podría ser un bucle for, sumando "a" veces "b".
¿Pero el "+"?


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #1 en: 12 Julio 2013, 09:14 am »

Es una función propia del lenguaje. Tu piensa que al final el código fuente que tu escribes se acaba transformando en instrucciones máquina... y cualquier procesador de ordenador tiene instrucciones para ( por ejemplo ) sumar y restar números con signo y sin signo.

Esto quiere decir que no se requiere implementar una función para que sume dos números enteros porque es una funcionalidad que ya viene implementada a más bajo nivel.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #2 en: 12 Julio 2013, 09:49 am »

en realidad tambien me da curiosidad y me gustaria saber exactamente... cuando sumo 2 numeros enteros, la operacion de ensamblador se resume a una sola instruccion de suma a bajo nivel? o hace más que eso?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #3 en: 12 Julio 2013, 10:00 am »

pues más o menos sería así

Código
  1. int result = num1 + num2;

Código
  1. mov ax, num1
  2. mov bx, num2
  3. add ax, bx
  4. mov result, ax

En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #4 en: 12 Julio 2013, 10:03 am »

La explicación al por qué de las 4 instrucciones es la siguiente:

Dependiendo de la arquitectura del procesador, no todas las instrucciones pueden acceder a la memoria.

un ejemplo es el caso de las instrucciones de suma, resta, ... Estas instrucciones únicamente pueden operar con los registros del procesador y con valores constantes. Es necesario, por tanto, mover las dos variables a registros del procesador para poder realizar la suma.

La instrucción de suma almacena en ax el resultado de la suma, por lo que después es necesario mover dicho resultado a la variable donde queremos almacenarlo.
En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #5 en: 12 Julio 2013, 14:25 pm »

Puedes hacer una multiplicación la compilas y la ves en ollydbg.

saludos
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Operator+ Original. ¿Cómo?
« Respuesta #6 en: 12 Julio 2013, 15:47 pm »

mm Danyfirex, buena idea jaja.

Gracias Eferion. Pensaba que sería un poco a más alto nivel el operator +.

¿Y el operator *? ¿Es a bajo nivel, o un conjunto de operators +?
En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #7 en: 12 Julio 2013, 16:06 pm »

la verdad no he mirado nunca una multiplicacion en ollydbg pero creo que usa las instrucciones MUL,IMUL entre otros.


http://es.wikipedia.org/wiki/Anexo:Listados_de_instrucciones_x86


saludos
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Operator+ Original. ¿Cómo?
« Respuesta #8 en: 12 Julio 2013, 16:36 pm »

A bajo nivel, la suma la realiza la ALU, aquí tienes el circuíto que la realizaría (lo han complicao un poco xD)

En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Operator+ Original. ¿Cómo?
« Respuesta #9 en: 12 Julio 2013, 16:55 pm »

Mm oblivion, no me he parado mucho en el circuito jeje pero gracias por la respuesta tan detallada xD
Pero yo me refería más a nivel software, no hardware jaja
Pero gracias igual :D (Que tiempos de hacer circuitos en electronica, y luego hacerlos en el minecraft jaja)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
COMO SE GRABA UN DVD ORIGINAL
Multimedia
dvd1975 3 3,208 Último mensaje 4 Julio 2004, 04:06 am
por Songoku
Como cambiar datos que vuelven al original con CE
Ingeniería Inversa
Tatan Ignacio 1 1,755 Último mensaje 5 Mayo 2015, 03:17 am
por engel lex
como identifico y se que un control de playstation 4 es original?
Juegos y Consolas
DJKENSHIN 0 2,589 Último mensaje 29 Mayo 2022, 20:59 pm
por DJKENSHIN
Red Team Operator - Malware Development Advanced Vol.1
Tutoriales - Documentación
ehn@ 0 1,613 Último mensaje 13 Octubre 2023, 20:26 pm
por ehn@
RED TEAM Operator: Windows Persistence
Tutoriales - Documentación
ehn@ 0 1,008 Último mensaje 30 Noviembre 2023, 12:40 pm
por ehn@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines