問題タブ [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.

0 投票する
7 に答える
25028 参照

assembly - プログラムカウンターを直接読み取る

Intel CPUのプログラムカウンターは、カーネルモードまたはその他のモードで直接(つまり、「トリック」なしで)読み取ることができますか?

0 投票する
5 に答える
13765 参照

embedded - ARM Cortex M3ハードフォールトの前にプログラムカウンター値を決定するにはどうすればよいですか?

STM32F103(ARM Cortex M3)を使用した組み込みプロジェクトがありますが、リリースモードでときどきハードフォールトが発生します。リカバリの一環として、ハードフォールト前のPC値を取得し、後でデバッグできるようにバッテリバックアップ領域に保存したいと思います。

ハードフォールトのポイントでのプログラムカウンターの値をどのように決定しますか?明らかに、PCはハードフォールト割り込み内のその場所に設定されています。

どこを見ればいいですか?ノーマルモードレジスタバンクのアドレスはありますか?

ありがとう!

0 投票する
3 に答える
686 参照

delphi - Delphiデバッグでプログラムカウンターを移動する

Visual Studioでは、ブレークポイントを使用してデバッグしているときに、実行カーソルを別の行にドラッグすることで、次に実行するコードの行を変更できます。これにより、IFステートメントなどをスキップできます。

誰かが知っているDelphiに同様の機能があるかどうか私はぼんやりと思っていましたか?

私はCPUウィンドウ(Delphi 2006)を見て回っていますが、命令をスキップするのではなく、順番に実行することしかできないようです。

0 投票する
1 に答える
432 参照

arm - ARMv6 では、PC の値が現在の命令に 8 を加えた値になるのはなぜですか?

ARM1156T2-S (これも ARMv6) のように、パイプラインのステージが 3 でない場合、9 つのステージがあります。

PC は現在の命令のアドレス + 8 のままですか?

0 投票する
2 に答える
3053 参照

assembly - ARM7の組み立てラインを理解しようとしている

私はこの組立ラインを持っています:

PC = 0x01000AD8 の場合

R3 = 0x00000008

CDPS = 800000D3 (つまり、C=0、Z=0)

この行を実行すると、PC の新しい値は (LDRLS を正しく理解している場合*)

PC = 0x01000AD8 + 0x00000008 * 4 = 0x01000AF8

しかし代わりに、結果は 0x00000BAC です

なんで?

この行コードが実行されると、MMU がアクティブになることを追加できます。

PS * 私の研究では LDRLS の「LS」の意味がわかりませんでした...

編集:CPSR値を追加

0 投票する
2 に答える
1100 参照

assembly - アセンブリ言語: プログラム カウンタ サイズ

プログラム カウンターのサイズは何によって決まりますか?

だから、これは私が知っていることです:

メモリ アドレス レジスタ (MAR) のサイズは、log2 (メモリ空間) です。

PC のサイズは、各メモリ アドレスのアドレス可能度と同じですか、それとも MAR と同じですか?

たとえば、メモリ空間が 16M で、各メモリ空間が 16 ビット アドレス指定可能である場合、MAR サイズはメモリ アドレス位置を指定するためにアドレス指定可能な 24 ビットになります。

PC のサイズは 24 ビット (MAR と同じ) ですか、それとも 32 ビット (各空間のアドレス可能度) ですか?

0 投票する
4 に答える
20077 参照

x86 - 命令ポインタを直接設定できないのはなぜですか?

x86 アセンブリに関するウィキペディアの記事には、「プログラマは IP レジスタに直接アクセスできない」と書かれています。

直接とは、mov や add などの命令を使用することを意味します。

なぜだめですか?この背後にある理由は何ですか? 技術的な制限は何ですか?

0 投票する
2 に答える
8933 参照

assembly - プログラムカウンターを変更またはアクセスすることはできますか?

プログラムカウンターについて読んでいるうちに、プログラムカウンターはその値を直接変更する方法がないという点で特別であることを知りました。

プログラムカウンターの内容にアクセス/変更する間接的な方法はありますか?

0 投票する
2 に答える
18275 参照

mips - MIPS - JAL の混乱: $ra = PC+4 または PC+8?

jal命令が MIPS プロセッサでどのように機能するか理解できません。私の2つの質問は
とおりです。b)本当にPC+8の場合、 PC+4の命令はどうなりますか? ジャンプの前に実行されますか、それとも決して実行されませんか?

Patterson と Hennessy (第 4 版)、pg 113:

「ジャンプアンドリンク命令: アドレスにジャンプすると同時に、次の命令のアドレスをレジスタに保存する命令 ( MIPS では$ra )」

「プログラムカウンター(PC):実行中のプログラム内の命令のアドレスを含むレジスター」

これら 2 つのステートメントを読むと、$raに保存される値は ( PC+4 )になるはずです。

ただし、本に付属の MIPS リファレンス データ (グリーン カード) では、jal 命令のアルゴリズムは次のように定義されてい
ます。

このウェブサイトにも「本当はPC+8です」と書かれていますが、不思議なことに、パイプライン処理は高度なトピックなので、「リターン アドレスはPC+4と仮定します」と書かれています。
私は 8086 アセンブリから来たので、アドレスに戻ることと、それに続くアドレスに戻ることには大きな違いがあることを認識しています。なぜなら、何かが真実でないと仮定しただけでは、プログラムは機能しないからです。ありがとう。

0 投票する
2 に答える
404 参照

architecture - プログラムカウンターの変更

PC (プログラム カウンター) レジスターが変化するすべての可能性のうち、次のことがわかりました。

それらはすべてですか、それとも何か不足していますか?

私はこの記事から来ました。