Sparc アセンブリを書き始めようとしていますが、コードをアセンブルして実行する方法がわかりません。私はarcToolsでアークを書きましたが、それは私がアセンブリで行った限りです。simics と qemu の両方をダウンロードしましたが、ここから先がわかりません。誰かが私を正しい方向に向けることができますか? ありがとう。
1279 次
1 に答える
6
使用しているオペレーティング システムについては言及していません。この例では、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
通常どおりにコードを実行し、レジスタとメモリを調べることができます。
于 2012-12-04T18:43:53.400 に答える