0

sparc32 で簡単なアセンブラ コードを実行しようとしていますが、標準出力に書き込めません。問題は ta 0x00 または ta 0x08 のいずれかで発生します。

# as -s gah.s -o gah.o
# ld gah.o -o gah -lc
# ./gah
#
# truss ./gah
execve("./gah", 0xEFFFFE28, 0xEFFFFE30)  argc = 1
[..]
open("/usr/platform/SUNW,SPARCstation-20/lib/libc_psr.so.1", O_RDONLY) Err#2 ENOENT
close(3)                                        = 0
write(1, " H e l l o ,   W o r l d".., 14)      = 14
_exit(0)
# file gah
gah:            ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped
# echo foo > /dev/fd/1
foo
# uname -a
SunOS foobar 5.6 Generic_105181-05 sun4m sparc SUNW,SPARCstation-20
gcc version 2.95.2 19991024 (release)

これはリンカ関連の問題でしょうか? トラス出力に書き込みが見られるようです。

dis 出力: http://sprunge.us/hMXV

4

1 に答える 1

0

裏で見ると、それstdoutファイル記述子番号を参照する単なる標準のファイル記述子であることがわかります1

つまり、に書き込むとstdout、ファイル記述子への書き込みを指すOS呼び出しが表示されます1

于 2012-11-07T23:10:35.360 に答える