青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

nasm x86 32位匯編實(shí)現(xiàn) int64 帶符號(hào) 加 減 乘 除 比較大小

  1 
  2 
  3 // 畢業(yè)論文做 Pascal 編譯器,需要生成的32位 nasm 匯編代碼支持 64位帶符號(hào)整數(shù)
  4 
  5 // 幾個(gè)標(biāo)號(hào)
  6 String line = genLabel( ip ) + "";
  7 String head = "              ";
  8 String heaA = "           .A ";
  9 String heaB = "           .B ";
 10 String heaC = "           .C ";
 11 String heaD = "           .D ";
 12 String heaE = "           .E ";
 13 
 14 
 15 
 16 // add 次棧頂+棧頂
 17 text.add( line + "pop eax" );
 18 text.add( head + "pop edx" );
 19 text.add( head + "add dword [esp], eax" );
 20 text.add( head + "adc dword [esp+4], edx" );
 21 
 22 
 23 // sub 次棧頂-棧頂
 24 text.add( line + "pop eax" );
 25 text.add( head + "pop edx" );
 26 text.add( head + "not eax" );
 27 text.add( head + "not edx" );
 28 text.add( head + "add eax, 1" );
 29 text.add( head + "adc edx, 0" );
 30 text.add( head + "add dword [esp], eax" );
 31 text.add( head + "adc dword [esp+4], edx" );
 32 
 33                                 
 34 // mul 次棧頂*棧頂                        
 35         // 乘數(shù) X
 36 text.add( line + "mov ecx, dword [esp+12]" );
 37 text.add( head + "mov ebx, dword [esp+8]" );
 38         // 乘數(shù) Y
 39 text.add( head + "mov edi, dword [esp+4]" );
 40 text.add( head + "mov esi, dword [esp]" );
 41         // 結(jié)果符號(hào)暫存于 dword [esp-8],正 1,負(fù) -1
 42 text.add( head + "mov dword [esp-8], 1" );
 43         // 乘數(shù) Y
 44 text.add( head + "cmp edi, 0" );
 45 text.add( head + "jge" + heaA );
 46         // 乘數(shù) Y 取相反數(shù)
 47 text.add( head + "not esi" );
 48 text.add( head + "not edi" );
 49 text.add( head + "add esi, 1" );
 50 text.add( head + "adc edi, 0" );
 51 text.add( head + "neg dword [esp-8]" );
 52         // 乘數(shù) X
 53 text.add( heaA + "cmp ecx, 0" );
 54 text.add( head + "jge" + heaB );
 55         // 乘數(shù) X 取相反數(shù)
 56 text.add( head + "not ebx" );
 57 text.add( head + "not ecx" );
 58 text.add( head + "add ebx, 1" );
 59 text.add( head + "adc ecx, 0" );
 60 text.add( head + "neg dword [esp-8]" );
 61         // 無(wú)符號(hào)64位乘法
 62 text.add( heaB + "mov eax, ecx" );
 63 text.add( head + "mul esi" );
 64 text.add( head + "mov dword [esp-4], eax" );
 65 text.add( head + "mov eax, ebx" );
 66 text.add( head + "mul edi" );
 67 text.add( head + "add dword [esp-4], eax" );
 68 text.add( head + "mov eax, ebx" );
 69 text.add( head + "mul esi" );
 70 text.add( head + "add edx, dword [esp-4]" );
 71         // 設(shè)置結(jié)果符號(hào)
 72 text.add( head + "cmp dword [esp-8], 1" );
 73 text.add( head + "jz "  + heaD );
 74 text.add( head + "not eax" );
 75 text.add( head + "not edx" );
 76 text.add( head + "add eax, 1" );
 77 text.add( head + "adc edx, 0" );
 78 text.add( heaD + "add esp, 8" );
 79 text.add( head + "mov dword [esp], eax" );
 80 text.add( head + "mov dword [esp+4], edx" );
 81 
 82 
 83 // div 次棧頂/棧頂,取商
 84         // 絕對(duì)值相除,得到商的絕對(duì)值,異號(hào)得負(fù)
 85         // 結(jié)果符號(hào)暫存于 dword [esp-4],正 1,負(fù) -1
 86 text.add( line + "mov dword [esp-4], 1" );
 87         // 除數(shù) Y
 88 text.add( head + "cmp dword [esp+4], 0" );
 89 text.add( head + "jge" + heaA );
 90         // 除數(shù) Y 取相反數(shù)
 91 text.add( head + "not dword [esp]" );
 92 text.add( head + "not dword [esp+4]" );
 93 text.add( head + "add dword [esp], 1" );
 94 text.add( head + "adc dword [esp+4], 0" );
 95 text.add( head + "neg dword [esp-4]" );
 96         // 被除數(shù) X
 97 text.add( heaA + "cmp dword [esp+12], 0" );
 98 text.add( head + "jge" + heaB );
 99         // 被除數(shù) X 取相反數(shù)
100 text.add( head + "not dword [esp+8]" );
101 text.add( head + "not dword [esp+12]" );
102 text.add( head + "add dword [esp+8], 1" );
103 text.add( head + "adc dword [esp+12], 0" );
104 text.add( head + "neg dword [esp-4]" );
105         // 循環(huán)次數(shù)
106 text.add( heaB + "mov ecx, 64" );
107         // 余數(shù)
108 text.add( head + "xor edx, edx" );
109 text.add( head + "xor eax, eax" );
110         // 商
111 text.add( head + "xor edi, edi" );
112 text.add( head + "xor esi, esi" );
113         // 循環(huán)
114 text.add( heaC + "shl dword [esp+8], 1" );
115 text.add( head + "rcl dword [esp+12], 1" );
116 text.add( head + "rcl eax, 1" );
117 text.add( head + "rcl edx, 1" );
118 text.add( head + "shl esi, 1" );
119 text.add( head + "rcl edi, 1" );
120 text.add( head + "mov ebx, eax" );
121 text.add( head + "sub ebx, dword [esp]" );
122 text.add( head + "mov ebx, edx" );
123 text.add( head + "sbb ebx, dword [esp+4]" );
124 text.add( head + "jl " + heaD );
125 text.add( head + "sub eax, dword [esp]" );
126 text.add( head + "sbb edx, dword [esp+4]" );
127 text.add( head + "add esi, 1" );
128 text.add( head + "adc edi, 0" );
129 text.add( heaD + "loop" + heaC );
130 text.add( head + "cmp dword [esp-4], 1" );
131 text.add( head + "jz " + heaE );
132 text.add( head + "not esi" );
133 text.add( head + "not edi" );
134 text.add( head + "add esi, 1" );
135 text.add( head + "adc edi, 0" );
136 text.add( heaE + "add esp, 8" );
137 text.add( head + "mov dword [esp], esi" );
138 text.add( head + "mov dword [esp+4], edi" );
139 
140 
141 // rem 次棧頂/棧頂,取余數(shù)
142         // 絕對(duì)值相除,得到余數(shù)的絕對(duì)值,符號(hào)與被除數(shù)相同
143         // 結(jié)果符號(hào)暫存于 dword [esp-4],正 1,負(fù) -1
144 text.add( line + "mov dword [esp-4], 1" );
145         // 除數(shù) Y
146 text.add( head + "cmp dword [esp+4], 0" );
147 text.add( head + "jge" + heaA );
148         // 除數(shù) Y 取相反數(shù)
149 text.add( head + "not dword [esp]" );
150 text.add( head + "not dword [esp+4]" );
151 text.add( head + "add dword [esp], 1" );
152 text.add( head + "adc dword [esp+4], 0" );
153         // 被除數(shù) X
154 text.add( heaA + "cmp dword [esp+12], 0" );
155 text.add( head + "jge" + heaB );
156         // 被除數(shù) X 取相反數(shù)
157 text.add( head + "not dword [esp+8]" );
158 text.add( head + "not dword [esp+12]" );
159 text.add( head + "add dword [esp+8], 1" );
160 text.add( head + "adc dword [esp+12], 0" );
161 text.add( head + "neg dword [esp-4]" );
162         // 循環(huán)次數(shù)
163 text.add( heaB + "mov ecx, 64" );
164         // 余數(shù)
165 text.add( head + "xor edx, edx" );
166 text.add( head + "xor eax, eax" );
167         // 商
168 text.add( head + "xor edi, edi" );
169 text.add( head + "xor esi, esi" );
170         // 循環(huán)
171 text.add( heaC + "shl dword [esp+8], 1" );
172 text.add( head + "rcl dword [esp+12], 1" );
173 text.add( head + "rcl eax, 1" );
174 text.add( head + "rcl edx, 1" );
175 text.add( head + "shl esi, 1" );
176 text.add( head + "rcl edi, 1" );
177 text.add( head + "mov ebx, eax" );
178 text.add( head + "sub ebx, dword [esp]" );
179 text.add( head + "mov ebx, edx" );
180 text.add( head + "sbb ebx, dword [esp+4]" );
181 text.add( head + "jl " + heaD );
182 text.add( head + "sub eax, dword [esp]" );
183 text.add( head + "sbb edx, dword [esp+4]" );
184 text.add( head + "add esi, 1" );
185 text.add( head + "adc edi, 0" );
186 text.add( heaD + "loop" + heaC );
187 text.add( head + "cmp dword [esp-4], 1" );
188 text.add( head + "jz " + heaE );
189 text.add( head + "not eax" );
190 text.add( head + "not edx" );
191 text.add( head + "add eax, 1" );
192 text.add( head + "adc edx, 0" );
193 text.add( heaE + "add esp, 8" );
194 text.add( head + "mov dword [esp], eax" );
195 text.add( head + "mov dword [esp+4], edx" );
196 
197 
198 // cmp 比較 次棧頂 與 棧頂,> 1, == 0, < -1 
199 text.add( line + "pop eax" );
200 text.add( head + "pop edx" );
201 text.add( head + "not eax" );
202 text.add( head + "not edx" );
203 text.add( head + "add eax, 1" );
204 text.add( head + "adc edx, 0" );
205 text.add( head + "add eax, dword [esp]" );
206 text.add( head + "adc edx, dword [esp+4]" );
207 text.add( head + "cmp edx, 0" );
208 text.add( head + "jle" + heaB );
209 text.add( head + "mov ecx, 1" );
210 text.add( head + "jmp" + heaD );
211 text.add( heaB + "cmp edx, 0" );
212 text.add( head + "jl " + heaC );
213 text.add( head + "cmp eax, 0" );
214 text.add( head + "jz " + heaE );
215 text.add( head + "mov ecx, 1" );
216 text.add( head + "jmp" + heaD );
217 text.add( heaE + "xor ecx, ecx" );
218 text.add( head + "jmp" + heaD );
219 text.add( heaC + "mov ecx, -1" );
220 text.add( heaD + "mov dword [esp], ecx" );
221 
222 
223 
224 // 測(cè)試程序
225 /*
226         test int64
227         小心被優(yōu)化而失去測(cè)試效果,盡管目前還優(yōu)化不到這個(gè)程度。
228 */
229 const
230         A =   4123412341L// > max unsigned int32
231         B =   1111111111L// < max unsigned int32
232         C =  -4123412341L// -A
233         D =  -1111111111L// -B
234         E =   2L;
235         F =  -2L;
236         G =  10000000000L;
237 
238         U =  7;
239         V = -7;
240         X =  3;
241         Y = -3;
242 var
243         a, b : int64;
244         i    : int32;
245 begin
246         i := U;
247         writeln( i div X );
248         writeln( i mod X );
249         writeln( i div Y );
250         writeln( i mod Y );
251         i := V;
252         writeln( i div X );
253         writeln( i mod X );
254         writeln( i div Y );
255         writeln( i mod Y );
256         writeln( 'V' );
257 
258         a := A;
259         writeln( a + B );
260         writeln( a + C );
261         writeln( a + D );
262         writeln( a + E );
263         writeln( a + F );
264         writeln( a + G );
265         writeln( 'A');
266 
267         writeln( a - B );
268         writeln( a - C );
269         writeln( a - D );
270         writeln( a - E );
271         writeln( a - F );
272         writeln( a - G );
273         writeln( 'B');
274 
275         writeln( a * B );
276         writeln( a * C );
277         writeln( a * D );
278         writeln( a * E );
279         writeln( a * F );
280         writeln( a * G );
281         writeln( 'C');
282 
283         writeln( a div B );
284         writeln( a div C );
285         writeln( a div D );
286         writeln( a div E );
287         writeln( a div F );
288         writeln( a div G );
289         writeln( 'D');
290 
291         writeln( a mod B );
292         writeln( a mod C );
293         writeln( a mod D );
294         writeln( a mod E );
295         writeln( a mod F );
296         writeln( a mod G );
297         writeln( 'E');
298 
299         a := G;
300         writeln( a - 1L );
301         writeln( 'F' );
302 end.
303 
304 
305 // 測(cè)試程序輸出(有乘法溢出int64)
306 2
307 1
308 -2
309 1
310 -2
311 -1
312 2
313 -1
314 V
315 5234523452
316 0
317 3012301230
318 4123412343
319 4123412339
320 14123412341
321 A
322 3012301230
323 8246824682
324 5234523452
325 4123412339
326 4123412343
327 -5876587659
328 B
329 4581569267319620851
330 1444214739798451335
331 -4581569267319620851
332 8246824682
333 -8246824682
334 4340635262580896768
335 C
336 3
337 -1
338 -3
339 2061706170
340 -2061706170
341 0
342 D
343 790079008
344 0
345 790079008
346 1
347 1
348 4123412341
349 E
350 9999999999
351 F
352 
353 

posted on 2013-04-29 20:46 coreBugZJ 閱讀(4008) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): AssembleCPUGPU

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费不卡亚洲欧美| 亚洲欧美日本视频在线观看| 亚洲国产一区在线| 国产精品视频内| 欧美国内亚洲| 欧美成人中文字幕| 欧美伦理91i| 欧美视频一区二区三区在线观看 | 国产精品99久久久久久久vr| 国产精品久久国产愉拍| 欧美二区不卡| 久热综合在线亚洲精品| 亚洲欧美日韩天堂一区二区| 亚洲伊人伊色伊影伊综合网| 欧美一区亚洲二区| 一区二区三区黄色| 亚洲欧美日韩系列| 蜜桃av一区| 91久久久久久久久| 久久久999| 亚洲精品一区二区三区四区高清 | 亚洲欧美综合网| 久久国产欧美精品| 久久成人国产精品| 一本久久综合亚洲鲁鲁五月天| 1024成人网色www| 亚洲久久一区| 美女脱光内衣内裤视频久久网站| 亚洲色图综合久久| 国产欧美日韩在线观看| 亚洲国产精品免费| 欧美jizzhd精品欧美巨大免费| 亚洲专区国产精品| 国产精品普通话对白| 亚洲欧美在线一区二区| 中文无字幕一区二区三区| 欧美另类一区| 亚洲日本激情| 一本色道久久88精品综合| 国产精品一区二区在线| 欧美一区91| 久久精品国产一区二区三| 亚洲第一精品在线| 亚洲伦理网站| 国产亚洲人成a一在线v站| 蜜臀a∨国产成人精品| 奶水喷射视频一区| 欧美一区二区三区免费观看| 国产精品久久77777| 久久婷婷国产综合国色天香| 欧美aa在线视频| 亚洲欧美日本在线| 老司机亚洲精品| 亚洲欧美色一区| 欧美激情小视频| 国产日韩欧美成人| 欧美成人一区二免费视频软件| 欧美片网站免费| 麻豆精品91| 国产精品视频大全| 亚洲欧洲精品一区二区三区波多野1战4 | 久久精品国产亚洲高清剧情介绍| 欧美一区二区三区久久精品茉莉花| 亚洲国产日韩欧美在线99| 亚洲婷婷在线| 日韩视频―中文字幕| 久久久久一区| 久久精品99久久香蕉国产色戒| 欧美国内亚洲| 亚洲国产综合在线看不卡| 国产色综合网| 久久精品亚洲精品国产欧美kt∨| 性欧美超级视频| 国产视频久久久久| 欧美一区二区日韩| 久久美女艺术照精彩视频福利播放| 国产精品美女在线观看| 亚洲桃花岛网站| 久久国产加勒比精品无码| 国产精品嫩草99av在线| 99在线精品观看| 欧美三级午夜理伦三级中视频| 亚洲人午夜精品免费| 亚洲一二三区在线| 国产亚洲精品bv在线观看| 久热综合在线亚洲精品| 日韩视频免费| 久久综合免费视频影院| 亚洲欧洲精品一区二区三区| 欧美日韩国产一级| 欧美一二三区精品| 亚洲电影免费| 欧美专区日韩专区| 99在线精品视频在线观看| 国产一区二区三区在线观看视频| 欧美激情亚洲自拍| 性欧美大战久久久久久久免费观看| 欧美激情四色| 久久久久看片| 性高湖久久久久久久久| 日韩午夜在线电影| 亚洲片国产一区一级在线观看| 国产乱码精品一区二区三区五月婷 | 国产伦一区二区三区色一情| 麻豆成人在线观看| 久久免费黄色| 久久精品一区二区| 亚洲一区二区高清| 亚洲美女精品久久| 亚洲国产视频一区| 亚洲理论电影网| 亚洲精品免费在线播放| 99热在线精品观看| 这里只有精品丝袜| 亚洲一区999| 亚洲免费小视频| 在线观看91精品国产入口| 一本大道久久a久久精品综合| 亚洲欧美激情诱惑| 日韩亚洲欧美精品| 亚洲最新合集| 久久综合狠狠综合久久综青草 | 亚洲午夜激情| 中国女人久久久| 久久精品青青大伊人av| 日韩午夜黄色| 亚洲伊人第一页| 国产精品一区二区黑丝| 韩国一区二区三区在线观看 | 亚洲国产一区二区视频| 亚洲人成网站777色婷婷| 亚洲永久免费| 蜜桃av一区二区| 亚洲男人的天堂在线观看| 美女国产精品| 国内精品视频在线播放| 久久精品99国产精品日本| 亚洲一区二区不卡免费| 午夜精品久久久久久久久久久久久| 久久精品亚洲乱码伦伦中文| 国产精品二区二区三区| 亚洲精品欧美| 久久一区二区三区av| 香蕉久久夜色精品国产| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品二区在线| 亚洲视频精选在线| 国产精品www.| 亚洲深夜av| 99av国产精品欲麻豆| 欧美韩国在线| 亚洲国产精品专区久久| 另类综合日韩欧美亚洲| 久久精品综合| 亚洲人成在线播放| 日韩一级裸体免费视频| 欧美精品性视频| 中文在线一区| 亚洲淫性视频| 在线成人激情| 日韩视频免费观看高清在线视频| 欧美成人亚洲成人日韩成人| 99视频有精品| 久久精品国语| 亚洲欧美日韩一区二区三区在线观看| 亚洲少妇在线| 在线日韩一区二区| 亚洲一区二区三区国产| 亚洲激情黄色| 久久免费黄色| 久久不见久久见免费视频1| 欧美精品久久久久久久久老牛影院 | 91久久在线播放| 亚洲欧美激情四射在线日| 影音先锋久久资源网| 亚洲一区不卡| 中文高清一区| 美女啪啪无遮挡免费久久网站| 午夜日本精品| 欧美男人的天堂| 亚洲国产小视频在线观看| 欧美午夜激情小视频| 日韩视频第一页| 日韩亚洲欧美一区二区三区| 欧美一区二区三区播放老司机 | 国产精品超碰97尤物18| 美女网站久久| 欧美在线观看视频在线| 亚洲欧美综合| 欧美视频在线看| 99视频精品全国免费| 日韩视频免费在线观看| 欧美欧美天天天天操| 欧美电影免费观看| 精品999在线播放| 欧美大片在线看免费观看| 亚洲国产日韩欧美在线动漫| 99在线|亚洲一区二区| 国产精品成人国产乱一区| 亚洲影院色无极综合|