我试图开始编写一些Sparc程序集,但是我不知道如何组装和运行代码。我已经用arcTools编写了arc,但是这与我进行汇编的程度差不多。我已经下载了simics和qemu,但是我不知道从这里去哪里。谁能指出我正确的方向?谢谢。
最佳答案
您没有说要使用什么操作系统。
对于此示例,我假设您有linux并想编写简单的独立sparc代码(出于教育目的)。
您需要为sparc和binutils
编译gdb
和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
执行代码,检查寄存器和内存。