此刻,我正在尝试仿真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机器上编写的。我的问题是如何使用仿真器获取汇编代码。