<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 內聯(lián)匯編的技巧

內聯(lián)匯編的技巧

作者: 時(shí)間:2010-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

  有時(shí)我們的程序需要一些很高的執行效率或者執行系統底層的功能模塊,這些關(guān)鍵的部分我們可以采用直接插入指令來(lái)達到我們的要求,以下是幾個(gè)與大家共同探討.

本文引用地址:http://dyxdggzs.com/article/151564.htm

  1.嵌入VC語(yǔ)句:

  在VC中匯編非常方便,只需要按照如下格式

  __asm{

  //匯編語(yǔ)句

  }

  請看如下示例代碼

  void CAlcmemDlg::OnButton3()

  {

  DWORD d=(m_size*1024*1024)/sizeof(DWORD);

  DWORD*p=(DWORD*)m_p;

  DWORD s;

  m_pr.SetMin(0);

  m_pr.SetMax((float)d);

  m_pr.SetEnabled(TRUE);

  if(NULL!=m_p){

  __asm{

  mov ecx,d

  mov eax,0

  L:        mov edx,DWORD ptr p

  mov [edx+eax],1  //隨便寫(xiě)入數據,此處寫(xiě)入1

  inc eax

  mov s,eax

  pushad

  }

  m_pr.SetValue((float)s);

  __asm{

  popad

  loop L

  }

  }

  }

  請注意示例代碼中兩個(gè)__asm塊中的pushad 和 popad 語(yǔ)句,pushad保存了寄存器環(huán)境,popad恢復了寄存器環(huán)境,使得m_pr.SetValue((float)s);語(yǔ)句對寄存器的影響被抵銷(xiāo),你還可以調用其他任何語(yǔ)句。但建議是盡量少打斷內聯(lián)匯編塊,以減少運行時(shí)來(lái)回倒騰寄存器環(huán)境的時(shí)間。筆者的測試是,當刪除m_pr.SetValue((float)s);并且合并兩個(gè)__asm塊,同時(shí)刪除pushad,和popad后,速度明顯提高??梢?jiàn)這種打斷通常是得不償失。

  通常要保存的寄存器環(huán)境還有Flags寄存器等,這些視具體情況而定。

  2.自由使用FPU,MMX等指令


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 技巧 匯編 內聯(lián)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>