如何编写 Sparc 汇编并在 Qemu 或 Simics 中运行其二进制文件



我正在尝试开始编写一些Sparc程序集,但是我不知道如何组装和运行代码。我已经用arcTools编写了arc,但这只是我用汇编编写的。我已经下载了 simics 和 qemu,但我不知道从这里开始。谁能指出我正确的方向?谢谢。

你没有说你使用什么操作系统。对于这个例子,我假设你有Linux,并且想要编写简单的独立sparc代码(用于教育目的)。您将需要binutilsgdb编译为 sparc 和 qemu-sparc 。将此小示例代码保存为test.s

.globl _start
_start:
    mov %o0, %g0
1:
    inc %o0
    cmp %o0, 100
    bl 1b
    nop
    b .
    nop

使用 as 进行组装,ld进行链接,如下所示:

$ sparc-linux-as -g -o test.o test.s
$ sparc-linux-ld -g -o test test.o

应生成二进制test

$ file test
test: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), statically linked, not stripped

现在开始qemu-sparc设置gdb远程调试(选择你选择的端口,我用了 1234):

$ qemu-sparc -g 1234 test

它将等待gdb连接。在另一个终端中,启动二进制文件的gdb

$ sparc-linux-gdb test
GNU gdb (GDB) 7.3.50.20111117-cvs-debian
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=sparc-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /var/tmp/test...done.
(gdb)

附加到qemu实例:

(gdb) target remote :1234
Remote debugging using :1234
_start () at test.s:3
3           mov %o0, %g0

从这里开始,您可以像往常一样使用gdb来执行代码,检查寄存器和内存。

相关内容

  • 没有找到相关文章

最新更新