Operator+ Original. ¿Cómo?

Iniciado por ivancea96, 12 Julio 2013, 04:55 AM

0 Miembros y 3 Visitantes están viendo este tema.

0xDani

@eferion, en el código ensamblador no te olvides de desreferenciar la memoria usando los brackets ('[', ']').
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

amchacon

Cita de: ivancea96 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 +?
La multriplicación puede implementatse vía hardware, la unica que no se puede implementar es la división (y aun asi, creo que la cpu puede hacerla internamente vía software interno).
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

cpu2

Cita de: eferion en 12 Julio 2013, 10:03 AMun 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.

add y sub pueden trabajar directamente con la memoria.

Código (asm) [Seleccionar]
pushq $0x1
addb $0x2, (%rsp)
popq %rax


Un saludo.

eferion

Cita de: 0xDani en 14 Julio 2013, 00:03 AM
@eferion, en el código ensamblador no te olvides de desreferenciar la memoria usando los brackets ('[', ']').

Era un ejemplo rápido... también me podrías haber dicho que no reservé espacio para la pila ni inicialicé correctamente la aplicación XD

0xDani

Cita de: eferion en 16 Julio 2013, 22:35 PM
Era un ejemplo rápido... también me podrías haber dicho que no reservé espacio para la pila ni inicialicé correctamente la aplicación XD

Entiendo que era un trozo del código, una cosa es que el código no esté completo y otra es que lo que pongas no esté bien.

De todas formas, ya que lo dije no estaría de más editar el mensaje... digo yo que cuanto mejor esté, pues mejor no?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

eferion

Cita de: 0xDani en 17 Julio 2013, 00:09 AM
Entiendo que era un trozo del código, una cosa es que el código no esté completo y otra es que lo que pongas no esté bien.

De todas formas, ya que lo dije no estaría de más editar el mensaje... digo yo que cuanto mejor esté, pues mejor no?

He estado dando vueltas a lo de los corchetes y hasta donde llego eso es para manejar punteros, me equivoco?

Yo no he usado punteros sino variables normales luego no veo que cabida tienen los corchetes... si me equivoco házmelo saber que hace algunos añitos que no toco ensamblador.

Un saludo.

0xDani

Cita de: eferion en 17 Julio 2013, 08:07 AM
He estado dando vueltas a lo de los corchetes y hasta donde llego eso es para manejar punteros, me equivoco?

Yo no he usado punteros sino variables normales luego no veo que cabida tienen los corchetes... si me equivoco házmelo saber que hace algunos añitos que no toco ensamblador.

Un saludo.

A ver, si le das un identificador a la variable, es porque la has declarado así:

Código (asm) [Seleccionar]

num1: dd 5
num2: dd 7
result: dd 0


De esta forma, tanto num1, como num2 como result son punteros, y hay que desreferenciarlos para acceder a la variable.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

eferion

Cita de: 0xDani en 17 Julio 2013, 14:49 PM
A ver, si le das un identificador a la variable, es porque la has declarado así:

Código (asm) [Seleccionar]

num1: dd 5
num2: dd 7
result: dd 0


De esta forma, tanto num1, como num2 como result son punteros, y hay que desreferenciarlos para acceder a la variable.

Saludos.


Vale, ya entendí.

Cuando escribí el código estaba pensando en algo más básico, tal que...

Código (asm) [Seleccionar]


num1 WORD 124h
num2 WORD 3120h
result WORD 0h

; ...

mov ax, num1
mov bx, num2
add ax, bx
mov result, ax


Por eso no me cuadraba lo de desreferenciar la memoria.

ivancea96

Venga, el código se entendió, gracias a todos por los comentarios.

eferion

Cita de: ivancea96 en 17 Julio 2013, 15:46 PM
Venga, el código se entendió, gracias a todos por los comentarios.

jajajajaja deja deja, que yo así también recuerdo cosas olvidadas :)