Вы можете столкнуться с несколькими проблемами здесь:
- Предполагается, что ARMSim v2.1 поддерживает подмножество интерфейса Angel / Semihosting . Это означает, что r0 должен содержать номер функции, r1 - указатель на блок параметров, и что используемый SWI-номер должен быть
0x123456
, как в swi 0x123456
, и ваша программа явно не совместима. - Если вы хотите отобразить ди git, вам нужно конвертировать этот ди git в представление этого ди git, которое можно отобразить. Например, если регистр r1 содержит # 10, значение должно быть обработано так, чтобы отображалось значение # 'A'. Если r1 содержит значение в диапазоне 0..9, оно должно быть обработано так, чтобы отображалось значение в # '0' .. # '9'.
- ARMSim v2.1 I на моей системе Lubuntu 19.10 не удалось выполнить
swi 0x123456
, и я получил то же самое печально известное сообщение об ошибке "Unimplemented SWI code."
, которое вы получили. Более того, программа Angel_print_int.s
, содержащаяся в файле архива примеров ARMSim , также не удалось выполнить.
На этом этапе я предполагаю, что ARMSim v2.1 не работает должным образом, и я переключился на онлайн-симулятор с поддержкой Terasi c DE1-So C Board . Эмуляция поддерживает устройство JTAG-UART , подходящее для отображения символов.
Программа была изменена таким образом, чтобы она могла отображать шестнадцатеричные представления значений в диапазоне 1..10 с помощью эмулированное устройство JTAG-UART;
.global _start
.text
_start:
mov r1, #10
mov r2, #1
// http://www-ug.eecg.toronto.edu/msl/nios_devices/dev_jtaguart.html
ldr r3, =0xFF201000
b L2
L3:
mov r0, r1
// convert value contained in r1 into a displayable hexadecimal digit
cmp r0,#9
bgt hex
dec:
add r0,#'0'
b continue
hex:
add r0,#'A' - 10
continue:
strb r0, [r3]
sub r1,r1,#1
L2:
cmp r1, r2
bge L3
mov r0, #'0'
done:
b done
Компиляция / загрузка / выполнение программы привели к отображению следующих символов в JTAG UART Windows справа:
A987654321
An альтернативой использованию этого эмулятора будет использование QEMU для Windows и arm-none-eabi-gdb.exe . Я мог бы предоставить рабочую процедуру / пример на случай, если вас это заинтересует.
Надеюсь, это помогло.