Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - farresito

#301
Veréis,

Como el Visual c++ 2010 me daba problemas y me sentía mejor con CodeBlocks, decidí esta mañana probar pero no soluciono nada. El código es simple:

Código (asm) [Seleccionar]

int numero = 0x12345;

    asm (".intel_syntax noprefix");
    /*Instrucciones*/
    asm ("mov eax, numero");
    asm ("mov ebx, [numero]");
    asm ("lea ecx, numero");
    asm ("lea edx, [numero]");
    /*Finalizacion instrucciones*/
    asm (".att_syntax noprefix");


El error que me da es el siguiente:
UNDEFINED REFERENCE TO 'NUMERO' (lines 12, 13, 14, 15)

Agredeceria un poco de ayuda por su parte. Se que estoy siendo algo pesado con algunas preguntitas pero es que no logro salir ¬¬

Un abrazo!

PD: Solo me da esos errores. Si pruebo en vez de numero un registro ningun problema :)
#302
Programación C/C++ / Re: Listas en C++
10 Marzo 2011, 12:54 PM
Gracias Akai. Me has aclarado las ideas. Me sonaba pero ahora lo tengo claro. Creo que lo que me ha despistado es no verlo así:

void insertar_al_principio (struct t_nodo* &p)

Realmente pensaba que había un puntero genérico; no exactamente, pero si de algún modo, pero veo que estaba equivocado :)

Un abrazo. Agradezco mucho tu ayuda ;)
#303
Programación C/C++ / Re: Listas en C++
9 Marzo 2011, 16:36 PM
Gracias Akai, me lo dejaste claro ;)

Ahora también me surgió la duda de porque uso *&p. El ampersand se que se usa para recibir la dirección de memoria de alguna variable o cualquier cosa si lo pongo delante, pero en este caso, no podría pasar por parámetros directamente struct t_nodo *p?
Me suena haber leído que los parámetros con & hace que no se copie el valor de la variable y se trabaje con ella sino que lo que se hace es trabajar directamente con la propia variable. Es correcto lo que digo o me olvido de algo?

Gracias, un abrazo
#304
Programación C/C++ / Listas en C++
9 Marzo 2011, 15:01 PM
Hola a todos,

Tengo una pequeña duda que no acabo de resolver; es muy simple, pero es por quitármela de encima. Tengo este código, que funciona perfectamente, pues lo he quitado del libro del que estoy estudiando, pero no logro entender una cosa concreta. El el código siguiente, cuando se declara la estructura STRUCT T_NODO *PRINCIPIO, si solo es un puntero que indica el inicio de toda la lista, no podria declarar una variable puntero normal que guardase la direccion de memoria del lugar donde se inicia la la lista?. Esto es lo que tengo

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;

struct t_nodo
{
    int numero; // Almacena los datos del nodo
    t_nodo *siguiente; // Variable puntero a otra estructura t_nodo
};

struct t_nodo *principio = NULL;


int main (void)
{
    //Declaro la funcion; lo podria haber puesto todo junto pero da igual
    void insertar_al_principio (struct t_nodo *&p);

}

void insertar_al_principio (struct t_nodo *&p)
{
    struct t_nodo *nuevo_nodo;

    // Creamos nuevo nodo

    nuevo_nodo = new struct t_nodo;

    // Rellenamos los campos de datos

    cout << "Escriba un numero: " << endl;
    cin >> nuevo_nodo->numero;

    /* Insertamos el nuevo nodo al principio de la lista */
    nuevo_nodo->siguiente = p;
    p = nuevo_nodo;
}


Gracias de antemano. Un abrazo!
#305
ASM / Re: BootLoader carga programa C
8 Marzo 2011, 10:39 AM
Si entiendes inglés aquí hay un link muy pero que muy interesante ;)

http://www.codeproject.com/KB/tips/boot-loader.aspx

Un abrazo!
#306
ASM / Re: Problema[solucionado]
8 Marzo 2011, 10:35 AM
No modifiques el post porque cuando lo soluciones porque de este modo en un futuro si alguien tiene el mismo problema lo podrá encontrar. Deberías poner el contenido y el título original en mi opinión :)
#307
ASM / Gas Inline con Síntaxis Intel
7 Marzo 2011, 22:37 PM
Holas,

Estuve trasteando un poco con los ensambladores y la creación de OS y leyendo sobre el ensamblador GAS leí que si usas síntaxis intel en vez de AT&T los opcodes no estan tan optimizados en algunas ocasiones. Sabeis algo acerca de eso? La página a la que me refiero es la siguiente:

http://wiki.osdev.org/GAS

Un abrazo!
#308
Programación C/C++ / Re: FIBONACCI
23 Febrero 2011, 14:54 PM
Hace unos días la hice también en C++:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <iostream>
using namespace std;

int main (void)
{
int a, b, sum;
a = 0;
b = 1;
for (int i = 0; i < 20; i++)
{
sum = a + b;
cout << sum << endl;
a = b;
b = sum;
}
}


SI te fijas, hay un apartado donde hago el bucle; en el ejemplo he puesto hasta 20 carácteres:

Código (cpp) [Seleccionar]
for (int i = 0; i < 20; i++)

Solo hace falta que hagas un cin para pedir al usuario un número que se guardará por ejemplo en NUM, y hacer

Código (cpp) [Seleccionar]
for (int i = 0; i < NUM; i++)

Donde NUM será la variable que guardará cuantos numeros se mostrarán (los que pida el usuario.

Así que queda:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <iostream>
using namespace std;

int main (void)
{
int a, b, sum, num;
a = 0;
b = 1;

cout << "Introduce la cantidad de numeros a mostrar: ";
cin >> num;

for (int i = 0; i < num; i++)
{
sum = a + b;
cout << sum << endl;
a = b;
b = sum;
}
}


Espero lo hayas entendido y que no haya perdido minutos de mi vida en explicártelo ;)

Un abrazo
#309
Muchisimas gracias por tu respuesta y por la buena explicacion :)

Todo entendido :)

¡Un abrazo!
#310
Holas a todos,

Llevo unos días pensando en una cosilla que me tiene hasta ahí. La cosa es que por internet hay muchos VS entre tal ensamblador o tal otro. Si bien he leído mucho acerca de ello, mi pregunta es más concreta.

Cuando se ensambla con un ensamblador u otro ¿hay diferencia alguna entre el resultado de cada uno? Es decir, el resultado en binario será el mismo en todo los ensambladores o habrá alguno que difiera un poco.

¿Se puede 'optimizar' un ensamblador? Por ejemplo, supongamos que tenemos éste código, sacado de una web:
Game Port

;  GAMEPORT.ASM
;

        .MODEL TINY

        .DATA

        yes     DB      13,10,"Game port is installed.",13,10,"$"
        no      DB      13,10,"Game port is not installed.",13,10,"$"

        .CODE
        ORG 100h

start:  mov     al, 1           ;value to write to port
        mov     dx, 201h        ;port number
        out     dx, al          ;write to port
        mov     cx, 0F00h       ;# of loops

port_loop:
        in      al, dx          ;read from port
        and     al, 0Fh         ;if jstick present, then AL should be
        cmp     al, 0Fh         ; 0Fh after ANDing with 0Fh.
        je      jstick_exists
        loop    port_loop
        mov     dx, OFFSET no   ;gameport not installed
        jmp     SHORT done

jstick_exists:                 
        mov     dx, OFFSET yes  ;gameport installed

done:   mov     ah, 9h
        int     21h

        mov     ax, 4c00h
        int     21h

END     start


El resultado en binario será el mismo en cada ensamblador (usando, por supuesto, el mismo linker)?

Es este aspecto el que hace un ensamblador 'mejor' o 'peor' que otro o solo es los formatos que acepta, los macros... etc.

¡Un abrazo! Agradezco de antemano sus respuestas :)