回答編集履歴

1

独自コメントをつけてコードを追記

2018/03/04 16:37

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -149,3 +149,41 @@
149
149
  ```
150
150
 
151
151
  このような「無駄」はアセンブリ言語に限った事ではありません。言い換えれば、漫然とコードを書くなら、どんな言語を使っても無駄な計算をしたり効率が悪かったりするという戒めになるでしょう。
152
+
153
+
154
+
155
+ ---
156
+
157
+ > wMargine = 4 - ((width * 3) % 4); // この計算は何か?
158
+
159
+
160
+
161
+ 念の為、この部分はどういうコードであったか。C言語風コメントをつけておきます。
162
+
163
+ ```
164
+
165
+ xor edx, edx // edx = 0; (削除可能な命令)
166
+
167
+
168
+
169
+ mov eax, width // eax = width;
170
+
171
+ mov ebx, 3 // ebx = 3;
172
+
173
+ mul ebx // edx:eax = eax * ebx; 即ち edx:eax = width * 3;
174
+
175
+
176
+
177
+ and eax, 3 // eax &= 3; は eax %= 4; と同じ
178
+
179
+
180
+
181
+ mov ebx, 4 // ebx = 4;
182
+
183
+ sub ebx, eax // ebx -= eax; 即ち ebx = 4 - ((width * 3) % 4);
184
+
185
+
186
+
187
+ mov wMargine, ebx // wMargine = ebx;
188
+
189
+ ```