4

Sparc アセンブリを書き始めようとしていますが、コードをアセンブルして実行する方法がわかりません。私はarcToolsでアークを書きましたが、それは私がアセンブリで行った限りです。simics と qemu の両方をダウンロードしましたが、ここから先がわかりません。誰かが私を正しい方向に向けることができますか? ありがとう。

4

1 に答える 1

6

使用しているオペレーティング システムについては言及していません。この例では、Linux を使用していて、単純なスタンドアロンの sparc コードを (教育目的で) 書きたいと想定しています。sparc とが必要binutilsで、コンパイルされます。この小さなサンプル コードを次の名前で保存します。gdbqemu-sparctest.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 に答える