raspberry instruction ensamblador data assembler assembly arm qemu

assembly - instruction - raspberry pi assembler



Obtenga entrada con QEMU y ARM semi-hosting? (1)

Para una arquitectura ARM, hacemos llamadas al sistema usando la instrucción SVC . Mi referencia es la siguiente de ARM ¿Qué es semihosting? . En particular, elija cualquier versión, seleccione Arm Compiler Toolchain Developing Software ..., luego elija Semihosting, para ver los números de llamadas disponibles del sistema.

Uno quiere definir una rutina getChar() que deje la char en el registro r0 . De acuerdo con la documentación, r1 debe ser 0 al llamar, y después de la salida r0 contiene el carácter de lectura. Por lo tanto, uno piensa que algo así como,

mov r1,#0 mov r0,#7 svc 123456

Deberían ser los ingredientes esenciales. Sin embargo, el programa no espera la entrada. También puedo decir, con seguridad, que el registro r0 siempre contiene el valor 0 después de salir. ¿Alguna idea de lo que está pasando? Sospecho que el problema radica en entender qué significa consola en la documentación.


De la fuente qemu 1.4.0: (archivo target-arm/arm-semi.c , líneas 303-305)

case TARGET_SYS_READC: /* XXX: Read from debug console. Not implemented. */ return 0;

Le sugiero que use SYS_READ con un tamaño de búfer de 1 en su lugar, si realmente desea utilizar el modo semihosted de qemu y leer desde la ''consola''.