問題タブ [mips]
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.
python - MIPS バイナリの分析: バイナリ データを解析するための Python ライブラリはありますか?
私は、16 進アドレスをシンボリック関数名とバイナリ内のソース コード行番号に解決する必要があるユーティリティに取り組んでいます。このユーティリティは Linux on x86 で実行されますが、分析するバイナリは MIPS ベースの組み込みシステム用です。MIPS バイナリは ELF 形式で、シンボリック デバッグ情報に DWARF を使用します。
現在、objdump をフォークして、16 進アドレスのリストを渡し、出力を解析して関数名とソース行番号を取得することを計画しています。MIPS バイナリをサポートする objdump をコンパイルしましたが、動作しています。
別のプロセスをフォークすることなく、Python コードからネイティブに検索できるパッケージを用意したいと考えています。python.org で libdwarf、libelf、または libbfd についての言及も、dwarfstd.org での python についての言及も見つかりません。
どこかに利用可能な適切なモジュールはありますか?
pointers - MIPS アセンブリ ポインタからポインタへ?
このケースの処理方法はわかっていると思いますが、それが正しいことを確認したいだけです。次の C コードがあるとします。
P には、別のアドレスを持つメモリ内の場所を指すアドレスが含まれています。2 番目の住所を変更したいのですが。したがって、MIPS コードは次のようになります。
それはあなたがそれをする方法ですか?
assembly - MIPS - 重要ですか?
私の質問: MIPS プログラミング言語は知っておくと有益ですか?
私は CS の学生で、MIPS に焦点を当てたアセンブリ クラスを受講しています。私は高級言語を書くのはとても快適ですが、Mips には少し落ち込んでいます。
MIPS は、私が本当に集中して完全に把握する必要があるものですか? それは将来私を助けるでしょうか?
assembly - *すべての* MIPS 命令の説明はどこにありますか
次の機能を備えた32ビットMIPS命令/オペコードのリストを見つけることができるWebサイトを知っている人はいますか?
- 実際のオペコードとアセンブリ言語マクロ (疑似命令) を明確に区別
- 特権レベルによる違いも含めて、命令の動作について説明します。
- 命令が導入/改訂された命令セットのリビジョンを示します (例: MIPS I、MIPS II、MIPS32 など)。
- syscall などの特権命令が含まれます。
私は、主に教育目的で、命令セットの「一部」を文書化した多数の Web サイトを知っています。浮動小数点命令や特権命令を省略したり、部分的にしか説明しない傾向があります。
ご参考までに、私は MIPS プロセッサ サブセットの Verilog コードを見て、それが実際の MIPS プロセッサの命令セットにどの程度準拠しているかを正確に把握しようとしています!
gcc - MIPS 用の gcc、3.4.4 または 4.3.2?
私たちが取り組んでいる組み込みシステムの気まぐれをサポートするために、gcc 3.3.2 (MIPS 用) に多くの変更を加えました。gcc 3.4 以降では、MIPS コード生成が大幅に改善されているように見えるので、変更を移植する予定です。問題は、どの gcc バージョンをターゲットにするべきかということです: 3.4.4 か、それとも 4.3.2 に直接移行しますか? 変更を移植するのはかなりの量の作業です。私はそれを 2 回行ってより良い結果を選びたくありません。
Linux-MIPS プロジェクトは引き続き gcc 3.4.4 を推奨しており、MIPS Technologies は gcc 3.4.4 に基づいて修正された SDE ツールチェーンを維持しています。私の組み込みシステムは Linux を実行していませんが、彼らの専門知識を尊重しています。
私が読んだことによると、MIPS バックエンドは 4.x のより高いレベルの最適化の恩恵を受けておらず、実際には 3.4.4 よりも遅いコードを生成します。誰でもこれを確認または否定できますか?
gcc - LLVMとGCCMIPSコード生成、ベンチマークはありますか?
MIPSコード、GCC、またはLLVMに「最適な」フリー/ OSSコンパイラーとは何かを知りたいのですが、それよりも優れたものはありますか?
コードサイズよりも、高速でメモリに制約のある生成されたアセンブリコードについてもっと知りたいです。
言い換えれば、llvm-optはgcc -O3よりもうまく機能しますか?
mips - パスカルから Mips コードへの変換
現在、Pascal パーサー (Lex / Yacc を使用して C で記述) 用の Mips コード ジェネレーターに取り組んでいます。正しいコード生成を保証するために参照として使用できるツールを知っている人はいますか?
assembly - MIPSからx86アセンブリに切り替えるときに知っておくべきことは何ですか?
学校では、しばらくの間MIPSアセンブリ言語でプログラミングを行ってきました。私はx86アセンブリを掘り下げることに興味があり、それはやや難しいと聞きました(私のMIPS教科書でさえこれを述べています)。
x86の世界に飛び込む前に、MIPSプログラマーとして知っておくべきコア情報は何ですか?
c++ - C /C++リンカーCALL16はグローバルシンボルに対してではなくxxxxxに再配置されます
リンク中にこれらのエラーが発生します。両方のメッセージが同じオブジェクトファイルに関係している必要があります。
と
2番目のメッセージがCALL16エラーが発生する理由のようですが、ファイルは正常にコンパイルされます。
これを修正するためのヒントはありますか?
参考までに、私はMIPSターゲットのクロスコンパイルを行っており、gcc4.1.2を使用しています。
編集:これまでのところ運がない:
使用されているフラグは次のとおりです:-fPIC、-Wl、-rpath、-Wl、-O1
私も成功せずに次のことを試しました:
-mno-explicit-relocs
-mexplicit-relocs
-mlong-calls
-mno-long-calls
-mxgot
-mno-xgot
その間、この時点でソースに戻り、さらに調査します。
tree - ツリーとプレフィックス (ポーランド語) 表記について
私の MIPS アセンブリ クラスでは、未知のサイズの式を解析ツリーに読み込む必要がありました。私は木を扱う必要がなかったので、これが私が値を保存する方法でした:
ユーザーが式 1 + 3 - 4 を入力したとします (各オペランドは 1 から 9 の数字のみです)。
一番左の子ノードが開始点となり、2 つのデータが含まれます
これが私がツリーを構築した方法です。読み込む値がなくなるまで、オペランドから演算子、次のオペランド、次の演算子へとポイントします。
私の次のタスクは、ツリーを再帰的にトラバースし、値を中置/前置/後置記法で出力することでした。
ツリーの構築方法を考えると、中置トラバーサルは問題ありませんでした。
私はプレフィックスにこだわっています。まず、私はそれを完全に理解していません。
プレフィックスで式 (1 + 3 - 4) を出力すると、- + 1 3 4 になりますか? オンラインの例に従うのに問題があります。
また、私のツリーは適切に構築されていると思いますか? つまり、現在のノードから前のノードに移動する方法がないということは、常に左端の子ノードからトラバーサルを開始する必要があるということです。
助けてくれてありがとう。