在ARM模拟器上运行Hello World

时间:2018-11-21 06:39:21

标签: c assembly arm emulation cpu

此刻,我正在尝试仿真ARM-cpu。我读了很多关于如何仿真CPU的文章。现在,我设法写下所有OpCode,Registers并在用C语言编写的ARM机器上编译了Hello World,以获取汇编代码(以测试我的仿真器)。

汇编器

    .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

我必须将代码从ROM加载到要从中执行代码的仿真RAM。但是,如何将其加载到RAM?我不明白如何拆分操作码和寄存器。

摘要

我想在Windows的Intel CPU上模拟ARM-CPU。为了测试我的模拟器,我用C语言编写了一个Hello World并对其进行编译以获取汇编代码。汇编代码是在带有Ubuntu 16.04的ARM机器上编写的。我的问题是如何使用仿真器获取汇编代码。

0 个答案:

没有答案