電子書籍の厳選無料作品が豊富!

私は
α: r1
β: -1
γ: r1
δ: r2
と答えました。でもたぶん最後はr4です。いわれてみればそうですけど、なんでですか?
またなんで+8しますか??

「あせんうぶり言語」の質問画像
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (4件)

>+8しますか??


64bit CPUだからではないですか?問題文の最初に条件として書いていると思います

>最後はr4です。
I2:で、計算結果は、r4に入っているからです。問題の例をC言語的に書き直すと、分かりやすいでしょう

uint64_t r1 = NUMBER_OF_ARRAY;
void* r2 = ARRAY_START_ADDRESS;
uint64_t r3;
uint64_t r4 = 0;
uint64_t* r5 = RESULT_STORED_ADDRESS;

I1:
 r3 = (uint64_t *)(r2+0);
 r4 += r3;
 r2 += 8;
 r1 = [α] + [β];

 if ([γ] != 0)
  goto I1;

 *(r5+0) = [δ];
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます。
問題文の最初に条件として書いていると思います
かいてません。
でも考えたら、r2 をインクリメントするときに配列が64ビット整数で構成されていて各要素が8バイトになっているとそうぞうするしかないとおもいました。
計算結果は、r4に入っているからです
レジスタにロードしてr2ににに履いてたメモリのアドレスのさきのメモリの中の値でr2はめもりの上の配列を動くということが理解したらr4の理由もわかりました。
C言語的に書き直すと、分かりやすいでしょう
わからないので、むしろわからないのでやめてください。

お礼日時:2024/07/17 23:11

日本語としてどうか以前に、


プロセサを指定せずにアセンブリの質問をしてることがおかしい。
BNZ って何だよ? って話。
    • good
    • 0

最後のstはstore:結果を格納する


格納する場所は0番地にr5を修飾した番地。
(理由はR5はそういうレジスタだと書いて有る)

また、r1,r2,r5の値は配列の要素数、先頭アドレス、結果を格納するアドレスって書いて有る。

つまり、r4が和の値が格納されるレジスタだと解る。

ところで、+8するって何処に書いて有る??
    • good
    • 0

R4だと、落選してしまうからなあ...


考えものだなあ。
    • good
    • 0
この回答へのお礼

うーん・・・

日本語としておかしいと思います

お礼日時:2024/07/17 20:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!