回答編集履歴
3
コードを追加
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
負の値
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
コードのコメント修正
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 $s
|
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; //
|
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
|
|