Título: Modificar registros a partir de C Publicado por: LaiaxanIV en 29 Marzo 2016, 19:21 pm Muy buenas a todos!
Os cuento el problema que tengo. Unos compañeros y yo estamos desarrollando un pequeño Sistema Operativo. Nos hemos aventurado en la gestión de procesos y estamos encallados ya que no sabemos como hacer el task switch. A la hora de cambiar la pila de ejecución necesitamos modificar el registro %ebp por el Kernel_Esp (que apunta a la cima de la pila del proceso anterior). Tenemos una macro Kernel_Esp que nos devuelve este puntero, pero necesitamos ponerlo dentro de %ebp. Tenemos: Código: Dword d = Kernel_Esp((union task_union*) t) __(asm)__{ "movl d,%ebp" //Esto obviamente no es correcto } Hemos visto algunas formas parecidas a: Código: Dword d = Kernel_Esp((union task_union*) t) __(asm)__{ "movl %0,%ebp" : "=r" (d) //Compila, pero no sabemos si funciona } Pero no sabemos si es esto lo que buscamos. En resumen, buscamos una manera de introducir una variable dentro de un registro. Título: Re: Modificar registros a partir de C Publicado por: fary en 29 Marzo 2016, 21:52 pm En sintaxis de intel sería así:
Código
Ahora sí, en AT&T ni idea. saludos. |