Запустите Hello World на эмуляторе ARM - PullRequest
0 голосов
/ 21 ноября 2018

Я сейчас пытаюсь подражать 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.Мой вопрос заключается в том, как получить код ассемблера с помощью моего эмулятора.

...