• 締切済み

汎用レジスタの値をトレースする?

プログラムを実行したときの汎用レジスタの値をトレースする

みんなの回答

回答No.1

自分で作ったソフトウェアなら開発環境にトレースする方法があると思います。 そうでない場合ollydbgなどのデバッガを使えば可能だと思います。

関連するQ&A

  • 汎用レジスタのワーキングビットテスト

    アセンブラ初心者です。 汎用レジスタR0からR15をワーキングビットテストするアセンブラソースを書いているのですが実行すると暴走します。 汎用レジスタR0からR15をワーキングビットテストする場合、レジスタデータを一旦どこかに保存してから行うものなのでしょうか? また、R0がインデックスレジスタ(意味が良く分かってません)、R15がスタックポインタが格納されていますがこれらのレジスタも値を一旦どこかに退避しておけばテストを行ってもよいものなのでしょうか?

  • ハイパースレディングのレジスタについて

    ハイパースレディングのレジスタについて ハイパースレッデイングのCPUで2つのスレッドA,Bを動かすとする。 このときAの実行状態を示す汎用レジスタやプログラムカウンタと     Bの実行状態を示す汎用レジスタやプログラムカウンタの扱いはどうなのでしょうか。 次の2つの方法が考えられる。 (1) レジスタのロード、実行、レジスタのセーブを繰り返す方法。     CPU内に高速なメモリを持ち、実行前にレジスタに値をロードして、命令を実行して、レジスタの値を保存を繰り返して、A,Bのスレッドを実行する方法。 (2) A用のレジスタとB用のレジスタを2組用意して、相互に切り替えながら実行する方法。     Aを実行するときはA用のレジスタを使用して、Bを実行するときはB用のレジスタを使用する方法。 の2つが考えられるが、それとも他の方法があるのでしょうか。 それに関連して、1度に実行する機械語命令の個数はいくつなのでしょうか。 スレッドAの機械語命令を実行して、切り替えてBの機械語命令を実行するときに、 Aの1命令を実行してから、Bの1命令を実行する。1命令毎に切り替えるのでしょうか、 それともAの数個の命令を実行してから、Bの数個の命令を実行するのでしょうか。 このときスレッドを切り替える際に1度に実行する機械語命令の個数はいくつでしょうか。 ご存知の方がおりましたら、教えて下さい。

  • 専用レジスタ 汎用レジスタ

    タイトルそのままなんですけど、専用レジスタと汎用レジスタについて教えてください。CPUによってちがうんですか?Z80をつかってるんですけど…。

  • i386は本当に汎用レジスタ?

    素朴な疑問なので、「暇なときに回答ください」にしました WEBページを見ていると、i386アーキテクチャのAX,BX,CX,DX・・・が汎用レジスタであるという記述が目に付きます。 ここで、汎用レジスタを、まったく機能が同じで命令に直行性があるもの、と定義すると、i386のレジスタは汎用レジスタであるといえるのでしょうか? i386のプログラムでアセンブラで書かれたものがあるとして、ソースプログラムのたとえばAXとCXを入れ替えてアセンブルして出来たプログラムはもとのものとまったく同じ動作をするでしょうか? (システムコールの引数引渡しレジスタの役割が決まっているというのは別にして)。 ご先祖様の8086は違ったのは覚えているのですが(たとえばSIとDIの機能が違う)。i386になって、本当に直交した命令体系になったのか疑問に思っています。

  • 汎用レジスタについて

    組み込み開発初心者です。 C言語で汎用レジスタを直接さわることはできるのでしょうか?

  • 汎用レジスタ

    ルネサスのH8S/2000などで汎用レジスタをERと表記していますが、Eは何の頭文字でしょうか? 直接英訳するとGeneral Registerなのに、なぜGではなくてEなのかが解らなくて質問しました。御存知の方がいましたら回答をお願いします。

  • registerと配列

    ある本に以下のような書き出しでプログラムが載っています。 >register付きで宣言された配列の先頭要素の値を表示(動作しない)< #include<stdio.h> int main(void) { register int x[5]; printf("x[0]の値は%dです。\n",x[0]); return 0; } 配列はコンパイルする段階で*(a+0)とポインタに変換されるとは理解しているのですが、私の環境(Red Hat Linux)では動作してしまいます。 さすがに、 printf("&x[0]の値は%pです。\n",&x[0]);とすると>registerにかかわらずポインタの値を求めています<という警告がでますが、 本では>動作しない<と書かれていますが、きちんとコンパイルも行われ>動作します< これはどの様に考えたらよいのでしょうか?宜しく願います。

  • 演算装置とフラグレジスタの関係

    条件分岐などで、ジャンプ命令するかどうかは、CPUがフラグ・レジスタの値を参照し判断するのにも関わらず、比較のための命令が実行されると、CPUの演算装置は、内部で減算をおこない、この結果をフラグレジスタに記録されるのは何故ですか?CPUで値を出せるのならわざわざフラグレジスタの値を参照する必要が無いと思うのですが・・・

  • レジスタの数

    32ビットプロセッサで汎用レジスタの数は32語程度ですよね?? なぜ、語数をこれ以上に増やすしたり、これ以下に減らしたりすると性能が低下するのですか?? それぞれおしえてください!

  • アルゴリズムのトレースについて

    閲覧ありがとうございます。 アルゴリズムのトレースの問題を解いていて、分からないところがあったため質問させていただきました。 先日からアルゴリズムについての授業が始まり、今日はトレースを習いました。 トレースについてはとりあえず基礎は問題なかったのですが、そのトレースについての問題で、「入力データ(入力された値)」という言葉がでてきました。 この言葉が、トレースの中のどの値を指しているのかを私は流れ図の「Aを読む」などと読み込んだ値だと解釈しました。 読み込む値は1つしかありませんでしたし、その他の流れ図の「B+2→B」などは"処理"だと考えたからです。 授業中問題の解説があったのですが、私の解釈とは違っており難しくて理解できませんでした。 教え方の上手な先生に聞こうと思ったのですが今日はおりませんでした。 授業で解いた問題は私の考え方で解けたのですが、この解釈は合っていますか? 違っていましたら、考え方を教えて頂きたいです。 お願い致します。