問題タブ [program-counter]
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.
architecture - PCアドレスと等しくなければ分岐
Branch命令について質問があります。
0x00002000 (PC) にある命令と等しくない場合、次の分岐があります。
RS(レジスタ4) = 0 RT(レジスタ3) = 7
したがって、分岐は等しくないため、次の式に従う必要があります。
if (rs!=rt) goto (PC+offset)
PC は 0x00002000 で、オフセットは 0000000000001000 です。
私が行ったことは、オフセットを 32 ビットに変換することで、左に 16 個の 0 が追加されるだけですが、2 つを追加する方法がわかりません。また、講義のスライドは特に明確ではなく、これを行う方法の例も示していません。 .. それで、どうすれば新しい PC を手に入れることができるのだろうと思っていました。
どんな助けでも大歓迎です、ありがとう!
ダン
java - 実行中のJavaプログラムのプログラムカウンター値
重複の可能性:
Javaプログラムのプログラムカウンターレジスタ値
実行中のJavaアプリケーションのプログラムカウンター(PC)レジスタ値を取得することは可能ですか?
mips - MIPSアーチで現在のPCレジスタ値を取得する方法は?
MIPSでバックトレースを行いたいのですが。次に、1つの問題に直面します。32個の通常のレジスタに属していないため、現在のPCレジスタ値を取得するにはどうすればよいですか。ご提案いただきありがとうございます。
cpu-registers - プログラムカウンターと命令レジスター
プログラム カウンタは次に実行する命令のアドレスを保持し、命令レジスタは実行する実際の命令を保持します。そのうちの1つで十分ではないでしょうか?
そして、これらのレジスタのそれぞれの長さは?
ありがとう。
embedded - 2 つの命令の間の PC 値 (プログラム カウンタ)
ウォッチドッグの原因を理解しようとしています。アセンブリ ルーチンのスニペットは次のとおりです。
ダンプからの私の PC 値は fe813cf3 です。これは何を意味するのでしょうか?どう解釈すればいいですか?さらに情報が必要な場合はお知らせください。
exception - ユーザーが指定した文字列の長さを表示しようとしたときに例外が発生しました。MIPS
ユーザーが指定した文字列の長さを計算しようとしています。コードを実行しようとするたびに、「PC = (特定のアドレス) で例外が発生しました」というメッセージが表示され、その後に次のメッセージが表示されます:「データ/スタック読み取りのアドレスが正しくありません: (別のアドレス)。スタックに関係があることはわかっていますが、問題がわかりません。MIPS のコードは bello で、QtSpim を使用しています。あなたの助けは非常に高く評価されます。
linux - mprotect ハンドラ内の現在のプログラム カウンタを取得して更新する方法
mprotect ハンドラ内の現在のプログラム カウンタ(PC)の値を取得したい。そこから、プログラムがいくつかの命令をスキップするように、PC の値を「n」個の命令で増やしたいと考えています。Linux カーネル バージョン 3.0.1 に対してすべてを実行したいと考えています。PC の値を取得できるデータ構造と、その値を更新する方法について何か助けはありますか? サンプルコードをいただければ幸いです。前もって感謝します。
私の考えは、メモリアドレスが書き込まれているときに何らかのタスクを使用することです。したがって、私の考えは、 mprotect を使用してアドレスを書き込み禁止にすることです。コードがそのメモリ アドレスに何かを書き込もうとすると、mprotect ハンドラを使用して何らかの操作を実行します。ハンドラーの世話をした後、書き込み操作を成功させたいと思います。したがって、私の考えは、メモリアドレスをハンドラー内で保護されないようにしてから、書き込み操作を再度実行することでした。コードがハンドラー関数から戻ると、PC は元の書き込み命令を指しますが、私は次の命令を指すようにしたいと考えています。したがって、命令の長さに関係なく、PCを1命令増やしたいと思います。
以下の流れを確認
メイン関数内:
android - サイレント エラー: debuggerd が自殺してゾンビを解放する
私のアプリは、起動する 3 ~ 4 回ごとにサイレントにシャットダウンするようです。例外も強制終了メッセージもありません。ほんの一瞬開いてからシャットダウンします。その後、同じことが再び起こる前に、問題なく平均して3〜4回再起動できます。
タブの 1 つにピンポイントすることができました (FragmentPagerAdapter を使用しています)。そのタブを作成しないと、決して起こりません。それ以外は、毎回同じ場所で発生するわけではないため、追跡することは不可能であることが証明されています. LogCat 出力を見ると、毎回わずかに異なる場所で発生しています。デバッガーの LogCat メッセージ (以下を参照) も、いくつかのアプリケーション ログを間に挟んで広がっていますが、それもさまざまです。
私のアプリはかなり大きいので、問題を特定できないため、ここにソースを投稿することはできません。これを引き起こしているタブは基本的に、カスタム SimpleCursorAdapter を使用する ListViewFragment を含む Fragment であると言えます。
私を正しい方向に向けることができるものは本当に感謝しています...
Android 2.3.6 を搭載した Nexus One でこれを取得しています。