問題タブ [sparc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - Sparc ハードウェアなしで Sparc バイナリを実行する
ここ数か月、私は SPARC プロセッサ (V8 または V9) の組み立てに興味を持っていました。私の質問はこれです。私は SPARC マシンにアクセスできません。x86 マシンで SPARC バイナリを実行する方法はありますか? QEMU を見てきましたが、設定方法がよくわかりません。
assembly - SPARC - シフトなしのビットマスク
私は SPARC アセンブリを学んでおり、レジスタからフィールドを抽出するスクリプトを作成する必要があります。スクリプトは、初期番号、フィールド開始位置、フィールド長の 3 つの値を受け入れます。
シフト関数は使用できませんが、乗算と除算は使用できます。
私は現在、呼吸器ウイルスに苦しんでおり、その後かなりの量の薬を服用しています. 私はこれをどこから始めるべきかを理解するのに非常に苦労しています. いくつかの指示をいただければ幸いです。
optimization - 廃止されたブランチは通常のブランチとどう違うのですか?
特に SPARC アセンブリの場合、廃止されたブランチは通常のブランチとどう違うのですか?
分岐命令の nop 遅延スロットを埋める必要がある場合は、分岐命令を無効にする必要があると常に考えていました。ただし、ブランチを無効にすることなく nop を埋めることができるため、この部分については正しいとは思いません。
c - 動的にリンクされたライブラリでグローバル変数を参照するにはどうすればよいですか?
環境は 32 ビット SPARC 上の Solaris ですが、これは動的リンクや位置に依存しないコードに関するより一般的な問題だと思います。
位置に依存しないコードとしてコンパイルし、C プログラムから動的にリンクするアセンブリ プログラムがあります。アセンブリプログラムからアセンブリプログラムによって予約されたメモリを参照できないことを除いて、正常に動作します。アセンブリ プログラム内でのジャンプは正常に機能します。
アセンブリ プログラム内でメモリを読み書きしたいだけですが、試行するたびにセグメンテーション エラーが発生します。
この問題をデバッグするためにこのテスト プログラムを作成しました
これをにコンパイルします
-K PIC -b として
結果の.soをCでdlopenします
を呼び出すとdl_testprog()
、「4」が出力されます。testprog または print_int のアドレスを出力しようとすると、"4" も出力されます。ラベルにジャンプすると、他のすべてが正常に機能します。逆アセンブルを見ると、当然のように foo が 0x0 に置き換えられています。
_GLOBAL_OFFSET_TABLE_
アセンブリプログラム内で自分のメモリに書き込むことができるようにするには、何かを実行する必要がありますか? もしそうなら、どうすればいいですか?私が試したすべての結果がセグメンテーション違反であり、これを行うための非常に優れたガイドを見つけることができませんでした (これは、あなたがそれを行うべきではないと私に信じさせます.とにかく、これはリンカーの問題ではありませんか?) .
performance - 1.6 JVM を使用した SPARC ハードウェアでの 64 ビットと 32 ビットのパフォーマンスの比較
SPARC ハードウェアで実行されている Tomcat クラスターのパフォーマンス チューニングを行っています。32 ビット JVM は今のところ十分なメモリを提供しますが、64 ビット JVM が提供する追加のメモリがすぐに必要になる可能性があるため、サーバー ストライピングに Terracotta の使用を開始する予定です。
SPARC で 64 ビットの JVM に移行すると、メモリ フットプリントが大きくなるだけでなく、パフォーマンスが低下します。この FAQ は、SPARC 上の 64 ビット JVM のバージョン 1.4 で 10% から 20% のパフォーマンス ヒットを示しています。
http://java.sun.com/docs/hotspot/HotSpotFAQ.html#64bit_performance
回避できるのであれば、10% から 20% のパフォーマンスへの影響は受けたくありません。この問題を回避するために 32 ビット / 64 ビットのハイブリッド アプローチを使用することが議論されているため、おそらく 1.6 JVM には 1.4 JVM ほどのパフォーマンス ヒットはありません。
http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/
SPARC でバージョン 1.6 を使用して 32 ビット JVM から 64 ビット JVM に移行するための現在のパフォーマンス メトリックを持っている人はいますか?
ありがとう。
ディーン
perl - Solaris 9 でスリープ中の SIGALRM
Solaris 9 (Sparc) の chroot 環境で Perl を実行しているときに、ちょっと変わったエラーが発生します。カスタム Perl を使用していますが、ほぼ正確に Perl 5.8.7 です。このバージョンは、Solaris 8 ~ 10 を含むさまざまなプラットフォームで何年も実行されています。
次のコードは非常に簡単です。
しかし、それを実行すると、「起きたばかりだ!」印刷されることはありません-代わりに、プログラムが終了し、「目覚まし時計」が画面にエコーされます。これは、スリープ状態の場合にのみ発生します。大量の計算を行い、実行に 10 秒かかるプログラムを作成すると、すべて正常に動作します。また、chroot 環境でのみ発生します。
「ALRM => undef」のエントリを持つ %SIG をダンプしましたが、これは予期されることです。chroot されていない環境でも同じ動作をします。ただし、スクリプトを変更して次を含めると:
...すべて正常に動作します。それで、取引は何ですか?私は Solaris の経験があまりありませんが、デフォルトのシグナルハンドラを適切に動作させる方法が必要です。
c++ - ナノ秒からミリ秒 - 1000000 による高速除算
出力を gethrtime からミリ秒に変換したいと考えています。
これを行う明白な方法は、1000000 で割ることです。しかし、私はこれをかなり頻繁に行っており、ボトルネックになるのではないかと考えています。
1000000 のような数値を扱うときに最適化された除算操作はありますか?
注: すべてのコードは移植可能でなければなりません。私は gcc を使用していますが、これは一般的に Sparc ハードウェア上にあります
以下のコードを使用したいくつかの簡単なテスト...それが正しいことを願っています。
出力例:
これが正しい場合、この場合、逆数による倍数は実際には遅くなります。おそらく、固定小数点演算ではなく浮動小数点演算を使用しているためです。私は整数除算に固執しますが、それでもほとんど時間がかかりません。
c - SPARC v9 にはダブルワードの比較およびスワップ命令がありますか?
そう; v9 準拠の 64 ビット SPARC CPU では、 cas命令が存在することがわかっています。これは、単一の語長の値に作用します。
casx命令への Web 参照も見ましたが、それ以上のことはわかりません。
私は疑問に思っています-これはダブルワードの比較と交換ですか?
そうでない場合、一般的な質問は次のとおりです。ダブルワードの比較と交換はありますか?
c++ - Solaris SPARC 用の C++ IDE
Rational Apex をフロントエンドとして使用して明らかに開発された C++ コード ベースが提供されました。私たちの意見では、Apex は C++ 開発には理想的ではありません。
私たちは、シンタックス ハイライト、コード ウォーキング (定義に移動し、使用法を表示する) があり、使用するのが面倒ではない、使用できる IDE を探しています。
NetBeans、Sun Studio、およびUnderstandについて調べました。NetBeans はあらゆる段階で私たちと戦っています。Sun Studio は機能が不足しており、Understand は実際には IDE ではありませんが、強制的にマクロと統合しようとしています。
SO については他にも同様の質問がありますが、それらはより直接的な質問 (そしてより曖昧) のようです。
私が知りたいのは、Solaris 開発者が何を使用しているかです。NetBeans や Sun Studio の外観を変更する必要がありますか、それとも見落としているものがありますか?
assembly - sparcアセンブリと%yレジスタ
私は現在sparcコンピュータを使用しており、数値が素数であるかどうかを調べようとしています。
ここにコードの一部があります:
つまり、基本的にここにあるのは3/2です。したがって、1のリマインダーがあるはずです。このリマインダーは%Yレジスターに入れる必要があります。しかし、%Yを見ると、まだ0のままです。%Yがまだ0のままであるのに、1のリマインダーが表示されるのはなぜですか。