回答編集履歴

3

コードを追加

2020/08/04 01:40

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -95,3 +95,47 @@
95
95
  配列の中に負の値を入れておくべきでした。
96
96
 
97
97
  5 と 6 を -5 と -6 に変えて試してください。
98
+
99
+
100
+
101
+ **追記2**
102
+
103
+ 「C言語で書き直す」というのは、アセンブリ言語と一対一という意味ではなく、
104
+
105
+ 次のように書き直すということかもしれません。
106
+
107
+ ```C
108
+
109
+ int array[] = { 1, 2, 3, 4, -5, -6, 7, 8, 9, 10 };
110
+
111
+ int s1 = 10, s2, s3, s4, s5, *s6 = array, s7;
112
+
113
+
114
+
115
+ int main(void)
116
+
117
+ {
118
+
119
+ s2 = s3 = s4 = 0;
120
+
121
+ for (s5 = 0; s5 < s1; s5++) {
122
+
123
+ s7 = s6[0];
124
+
125
+ s2 += s7;
126
+
127
+ if (0 < s7) s3 += s7;
128
+
129
+ if (s7 < 0) s4 += s7;
130
+
131
+ s6++;
132
+
133
+ }
134
+
135
+ }
136
+
137
+ ```
138
+
139
+ 何をしているか分かりますよね。
140
+
141
+ コメントをお願いします。

2

負の値

2020/08/04 01:40

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -87,3 +87,11 @@
87
87
  ```
88
88
 
89
89
  何をしているかは実行結果から考えてみてください。
90
+
91
+
92
+
93
+ **追記**
94
+
95
+ 配列の中に負の値を入れておくべきでした。
96
+
97
+ 5 と 6 を -5 と -6 に変えて試してください。

1

コードのコメント修正

2020/08/03 01:11

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  if (t0 == zero) goto L4; // beq $t0, $zero, L4
34
34
 
35
- s7 = s6[0]; // lw $s8 = 0($s6)
35
+ s7 = s6[0]; // lw $s7 = 0($s6)
36
36
 
37
37
  s2 = s2 + s7; // addu $s2, $s2, $s7
38
38
 
@@ -48,7 +48,7 @@
48
48
 
49
49
  t0 = s7 < zero; // slt $t0, $s7, $zero
50
50
 
51
- if (t0 == zero) goto L3; // beq $t0, $zero, L3
51
+ if (t0 == zero) goto L3; // beq $t0, $zero, L3
52
52
 
53
53
  s4 = s4 + s7; // addu $s4, $s4, $s7
54
54
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  s6 = (int *)((char *)s6 + 4); // addi $s6, $s6, 4
60
60
 
61
- goto L1;
61
+ goto L1; // j L1
62
62
 
63
63
  L4:
64
64