Fuera de ello, debemos evitar estos errores desde la compilación, con
lo que debemos agregar condicionales para detectar si estamos en un
sistema donde somos capaces de compilar, y si no lo estamos, saber
decir por qué, ej: "No se puede compilar en AIX(64bit): La
lectura/escritura de...".
Esto nos esclarecerá las arquitecturas que soportamos, y las
especificaciones técnicas que debemos tener en cuenta para portar el
sistema, a demás de ser más amigable para el usuario que un oscuro
error de compilación de inline assembler.
Cualquiera que quiera investigar sobre esto y enviar información es bienvenido:
INFO ################################################################
$ gmake
>>> MYTHOS BUILD STARTED AT 2011-02-28 21:25:29
>>> built on AIX
o> KERNEL OBJECT [src/kernel/main.ko]
o> KERNEL OBJECT [src/kernel/video.ko]
o> KERNEL OBJECT [src/kernel/system.ko]
src/kernel/system.c: In function `inportb':
src/kernel/system.c:7: error: impossible constraint in `asm'
gmake: *** [src/kernel/system.ko] Error 1
$ cat -n src/kernel/system.c
1 #include "inc/types.h"
2
3
4 BYTE inportb(WORD Port)
5 {
6 BYTE result;
7 __asm__ __volatile__ ("inb %1, %0" : "=a" (result) :
"dN" (Port));
8 return result;
9 }
10
11 void outportb(WORD Port, BYTE Data)
12 {
13 __asm__ __volatile__ ("outb %1, %0" : : "dN" (Port),
"a" (Data));
14 }
--
Saludos,
D4RIO