問題タブ [mips64]
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.
mips - MIPS64にアドレスをロードする
これはおそらく私が見ているのではない単純で明白なことですが、MIPS64プロセッサにアドレスをロードするにはどうすればよいですか?MIPS32プロセッサでは、次のアセンブラ疑似命令:
に展開:
MIPS64命令セットを見るとlui
、32ビットワードの上半分に16ビットのイミディエートがロードされていることがわかります。64ビットワードの上部領域にすぐにロードするような拡張命令はないようです。したがって、これは、la
疑似命令と同等のことを行うために、次のようなコードに拡張する必要があるようです。
これは私を少し驚かせます...アドレスをロードするのと同じくらい基本的な何かのために複雑なので、私は何かを見落としていると確信します。
私が見落としているのは何ですか(もしあれば)?
boost - Boost.asio コンパイルの問題: `__sync_add_and_fetch_8 への未定義の参照
やあみんな、これは初歩的な質問かもしれませんが、Googleで役立つ解決策が本当に見つかりません. 私はboost.asioでHello Worldをテストしています.プログラムは非常に単純です:
コンパイルに合格し、Intel Pentium PC (Ubuntu 10.10、gcc 4.4.5、Boost 1.46.0) で問題なく動作しました。私が使用したコマンドラインは
g++ -oa a.cpp -I /Boost-Include-Path/ -L /Boost-lib-Path/ -lboost_system
しかし、別のマシンで同じコードをコンパイルすると (これは大きなマシンです。後で説明します)、コンパイルに合格できず、次のようなエラーが発生します。
/tmp/ccOZxZBX.o: 関数
boost::asio::detail::gcc_sync_fenced_block::gcc_sync_fenced_block()': a.cpp:(.text._ZN5boost4asio6detail21gcc_sync_fenced_blockC1Ev[boost::asio::detail::gcc_sync_fenced_block::gcc_sync_fenced_block()]+0x4c): undefined reference to
__sync_lock_test_and_set_4 内 /tmp/ccOZxZBX.o: 関数boost::detail::atomic_count::operator++()': a.cpp:(.text._ZN5boost6detail12atomic_countppEv[boost::detail::atomic_count::operator++()]+0x30): undefined reference to
__sync_add_and_fetch_8 内 /tmp/ccOZxZBX.o: 関数boost::detail::atomic_count::operator--()': a.cpp:(.text._ZN5boost6detail12atomic_countmmEv[boost::detail::atomic_count::operator--()]+0x30): undefined reference to
__sync_add_and_fetch_8 内 /tmp/ccOZxZBX.o: 関数boost::detail::atomic_count::operator long() const': a.cpp:(.text._ZNK5boost6detail12atomic_countcvlEv[boost::detail::atomic_count::operator long() const]+0x30): undefined reference to
__sync_fetch_and_add_8' 内
私が使用したマシンは、MIPS64 命令セット プロセッサを使用する SiCortex SC5832 で、OS は CentoOS に変更されました。Gcc 4.2.3、Boost1.46.0。MIPS の互換性に問題がある可能性はありますか? -mips64 オプションを追加しましたが、それでも同じエラーが発生します。この環境が一般的ではないことは承知していますが、同様の大きなマシンを使用しているユーザーの中には、同じ問題に直面する人もいると思います。
どんな助けでも大歓迎です。ちなみにsudo権限はありません。
ありがとう、トニー
mips - MIPS アーキテクチャ syscall 命令
MIPS における syscall 命令の役割は何ですか?
linux - dpkg-architecture が存在しない場合、Linux で mips cpu タイプを区別する方法は?
短い質問: Linux ディストリビューションでmips、mipsel、mips64、およびmips64elを確実に区別するにはどうすればよいですか?
より長い説明:
多くのアーキテクチャ向けに、静的にビルドされた/ディストリビューションに依存しないバイナリ (TeX 用) を提供しています。インストール スクリプトは通常実行され、オペレーティング システムuname -s
とuname -m
アーキテクチャを決定します。次に、その決定に基づいてサーバーからバイナリがフェッチされるため、確実に機能する必要があります。そして、そうです。Mac OS X 10.6 と Debian を除くほぼすべての場所。Mac は64 ビット アプリケーションを実行する OS でi386を報告しますが、Debian は32 ビット OS でmips64を報告します。
mips64 のDebianはプロセッサの種類を正しく報告しますが、少なくとも 2 つの理由で役に立ちません。
- OSはその名の通り64ビットではなく、32ビットです。
- リトルエンディアンモードで動作しています。Debian はこれをmipsではなくmipselと呼んでいます。頻繁に切り替えることができますが、OS は 1 つのモードでしか動作せず、mips ソフトウェアは mipsel と互換性がないことがよくあります。
以下は、システム コマンドからの出力の一部です。
dpkg-architecture は、他の Linux ディストリビューションには存在しないことを除けば、このタスクに最適です。
最初の問題は、ここですでに解決されています:与えられた Linux が 32 ビットか 64 ビットかを判別するにはどうすればよいですか?
コマンド
私のシステムでは32を適切に報告します。
しかし、それがビッグ エンディアンかリトル エンディアンかを判断するにはどうすればよいでしょうか。
config.guess が違いを判断できることがわかりましたが、エンドユーザーのコンピューターに存在しない可能性があるコンパイラーを実行することで判断できます。その上、 config.guess は、オペレーティング システムが 32 ビット モードで動作するという事実を完全に無視し、mipselではなくmips64elを誤って報告します。
linux - gnutls のクロス コンパイル時のエラー
gnutls をクロスコンパイルしようとしています。Gnutls は libnettle に依存しています。libnettle をクロス コンパイルできましたが、gnutls をクロス コンパイルしようとすると、configure 中にエラーが発生します。
私がクロスコンパイルした libnettle のバージョンは 2.2 でした。
設定するコマンドは次のとおりです。
私も試しました:LDFLAGS="-L/home/tom/lib/nettle-2.2"
運が悪いと設定します。
ライブラリは /home/tom/lib/nettle-2.2/lib にインストールされます。このディレクトリも試しました。何らかの理由で libnettle が検出されません。理由を知っている人はいますか?
mono - OCTEON(mips64)でモノラルをブートストラップすると、ランタイムは機能しますが、gmcsは機能しません
DebianSidを実行しているCaviumOCTEON(mips64)用に(gitから)monoをコンパイルしようとしています。
OCTEONで完全にコンパイルしようとすると(既存のmonoインストールを一切使用せずに)、mcsディレクトリまで到達して問題が発生します。問題は、機能するgmcがないことに関連しています。make get-monolite-latestの推奨パスが機能しません(コアバージョンが間違っている、まだgmcsがないなど)。
これに対抗するために、ARM用にmonoをクロスコンパイルするプロセスを試しました。もちろん、私は高速のMIPハードウェアを持っているので、スクラッチボックスは使用しません。
分割ビルドプロセスではエラーは発生しません。OCTEONにインストールすると、(x86_64システムのgmcsを介して)既にコンパイルされているC#プログラムを実行できます。ただし、OCTEONのソースからコンパイルできません。したがって、ILランタイムは機能しているように見えますが、コンパイラーは機能しません。
たとえば、http://www.mono-project.com/Mono_Basicsから単純なhello worldをコンパイルすると、次のようになります。
近くにいるような気がしますが、一歩足りません。それはmscorelib.dllを見つけていないかのようです。それでも、そのファイルはプレフィックスパスの下に存在するようです。
mcsコードを調べてその流れと何が問題になっているのかを理解する前に、ここにいる誰かが問題に光を当てて正しい方向に向けてくれることを期待していました。私は何かを逃したことがありますか?明らかな修正はありますか?
assembly - データセグメントへの入力直後に出力を保存する
これは私のコードです:
サブルーチンを含むループがあります。subは($ v0 regで)'jr$ra'コマンドがフローをメイン関数に返すたびに保存したい出力を返します。データセグメントへの入力の直後にこれらの出力を保存する必要があります。どうすればこれを行うことができますか?それが1つの出力だけだった場合、私は言うことができます:
直後に保存されます。しかし、複数の出力があるので、一般的な方法でこれを行うにはどうすればよいですか?
linux - Loongson CPU と MIPS アセンブリ?
私は Gdium Liberty 1000 ラップトップ (Loongson 2F プロセッサ) を持っています。主に MIPS アセンブリ言語を調べるために使用します。Loongson の内部アーキテクチャは、MIPS CPU とは異なるはずです。それは実際に変更なしで MIPS アセンブリ (MIPS64?) を実行しますか、それとも Loongson 2F アーキテクチャに特定の癖がありますか? Intel/AMD x86 プロセッサーで SPIM (または MARS) を MIPS シミュレーターとして実行できることに気付きました。
修正なしで MIPS アセンブリ (MIPS64?) を実行できますか?
MIPS アセンブリを学習するために Gdium (Mandriva Linux のバージョンを実行) で利用できるツールは何ですか?
mips - 1 つの命令を使用して目的のレジスタに配置できるすべてのビット パターンのセット
次の一連の MiniMIPS 命令があるとします。
MiniMips 命令では、レジスタをゼロ ビット パターン (すべてのビットがゼロ) に初期化するなどの一部のアクションで、それを実行できる複数の命令を持つことができます。
私の質問は、特定の命令セットからの単一の命令を使用して、目的のレジスタに配置できるすべてのビットパターンのセットは何ですか。
c - CをMIPS64アセンブリに変換する
私はCでいくつかのコードを記述しましたが、最適化の有無にかかわらず、これをMIPS64に変換する必要があります。私はこれをgccで変換しようとしていますが、これははるかに複雑なx86に変換します。さらに、私はクロスコンパイラーを見つけようとしましたが、どのコンパイラーも動作させることができませんでした。どんな助けや提案も大歓迎です。
敬具、