亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1224 | 回復(fù): 2
打印 上一主題 下一主題

內(nèi)聯(lián)匯編的問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-02-14 17:56 |只看該作者 |倒序?yàn)g覽
 本來(lái)只是想驗(yàn)證一下算法的.無(wú)意中遇到的問(wèn)題
    命名不怎么樣,寫(xiě)的比較隨意,大家將就看吧



  1.   #include <stdio.h>

  2. /*
  3.    求任何相鄰子向量的最大和,若為負(fù),則返回0
  4. */
  5. void C_maxsofar( int a[] );
  6. void ASM_maxsofar( int a[] );

  7. void C_maxsofar( int a[] )
  8. {
  9.         int maxsofar = 0;
  10.         int i = 1;
  11.         int sum = 0;

  12.         for ( i = 1 ; i < a[0]+1; i++ )
  13.         {
  14.                 sum += a[ i ];
  15.                
  16.                 if ( sum < 0 )
  17.                 {
  18.                         sum = 0;
  19.                 }
  20.                 else
  21.                 {
  22.                         if ( sum > maxsofar )
  23.                         {
  24.                                 maxsofar = sum;
  25.                         }
  26.                
  27.                 }

  28.         }
  29.         printf( "maxsofar = %d\n",maxsofar );

  30. }

  31. void ASM_maxsofar( int a[] )
  32. {
  33.    int maxsofar;
  34.    __asm
  35.         {
  36.        
  37.                 push esi
  38.                 push ebx
  39.                 push edi
  40.                
  41.                 mov eax,0        //sum
  42.                 mov ecx,0                       //maxsofar
  43.                 mov ebx,0       
  44.                 mov edi,0                       //a[0]

  45.                 mov ebx,a
  46.                 inc esi
  47.                 mov edi,[ebx]
  48.        
  49.         begin:
  50.                
  51.                 cmp esi,edi
  52.                 jg  end
  53.                 add eax,[ebx+4*esi]
  54.                 cmp eax,0
  55.                 jg  next1
  56.                 mov eax,0
  57.         next1:
  58.                 cmp ecx,eax
  59.                 jg        next2
  60.                 mov ecx,eax
  61.         next2:
  62.                
  63.                 inc esi
  64.                 jmp begin
  65.         end:
  66.                 mov eax,ecx

  67.                
  68.                 pop edi
  69.                 pop ebx
  70.                 pop esi
  71.                 mov maxsofar,ecx
  72.         }
  73.     printf( "maxsofar = %d\n",maxsofar );
  74.        
  75. }

  76. int main()
  77. {
  78.         int item[] = { 10,31,-41,59,26,-53,58,97,-93,-23,84 }; // item[0]存儲(chǔ)數(shù)組元素個(gè)數(shù)

  79.         C_maxsofar( item );
  80.        
  81.         ASM_maxsofar( item );

  82.         return 0;
  83. }
復(fù)制代碼



    如果直接運(yùn)行的話(huà),則會(huì)發(fā)現(xiàn)是C_maxsofar得出正確結(jié)果,187 , 而ASM_maxsofar得出了錯(cuò)誤結(jié)果0

     跟蹤調(diào)試,卻發(fā)現(xiàn)都得出了正確結(jié)果187

     百思不得其解,優(yōu)化選項(xiàng)已經(jīng)全部關(guān)了
 
  編譯器: VC6.0, XP

[ 本帖最后由 skygram 于 2006-2-14 20:44 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2006-02-14 18:00 |只看該作者
自己頂一下,老大們幫一下。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2006-02-14 20:48 |只看該作者
 沒(méi)人看嗎?

 自己動(dòng)手運(yùn)行一下,是不是也出現(xiàn)同樣問(wèn)題?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP