Я сейчас пытаюсь подражать ARM-процессору.Я много читал о том, как эмулировать процессор.Прямо сейчас мне удалось записать все коды операций, регистры и т. Д. И скомпилировать Hello World на ARM-машине, написанной на C, чтобы получить код ассемблера (для проверки моего эмулятора).
Assembler
.arch armv8-a
.file "hello.c"
.section .text.startup, "ax", @progbits
.align 2
.p2align 3,,7
.global main
.type main, %function
main:
stp x29, x30, [sp, -16]!
adrp x1, .LC0
add x1, x1, :lo12:.LC0
mov w0, 1
add x29, sp, 0
bl __printf_chk
mov w0, 0
ldp x29, x30, [sp], 16
ret
.size main, .-main
.section .rodata.str1.8, "aMS", @progbits, 1
.align 3
.LC0:
.string "Hello World"
.ident "GCC: (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.10)"
.section .note.GNU-stack, "", @progbits
Я должен загрузить код из ПЗУ в мою эмулируемую ОЗУ, из которой будет выполняться код.Но как мне загрузить его в оперативную память?Я не понимаю, как разделить коды операций и регистры.
Сводка
Я хочу эмулировать ARM-процессор на процессоре Intel с Windows.Чтобы проверить мой эмулятор, я написал Hello World на C и скомпилировал его, чтобы получить код на ассемблере.Код на ассемблере написан на ARM-Maschine с Ubuntu 16.04.Мой вопрос заключается в том, как получить код ассемблера с помощью моего эмулятора.