日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]內聯匯編的技巧

  有時我們的程序需要一些很高的執(zhí)行效率或者執(zhí)行系統(tǒng)底層的功能模塊,這些關鍵的部分我們可以采用內聯匯編直接插入匯編指令來達到我們的要求,以下是幾個技巧與大家共同探討.

  1.內聯匯編嵌入VC語句:

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

  __asm{

  //匯編語句

  }

  請看如下示例代碼

  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  //隨便寫入數據,此處寫入1

  inc eax

  mov s,eax

  pushad

  }

  m_pr.SetValue((float)s);

  __asm{

  popad

  loop L

  }

  }

  }

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

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

  2.自由使用FPU,MMX等指令[!--empirenews.page--]

  void CAlcmemDlg::OnButton4()

  {

  float f_t=.132;

  float f_s=0;

  __asm{

  fld f_s

  fld f_s

  fld f_s

  fld f_t

  fadd f_t

  fst f_t

  //    fadd fs

  }

  }

  可以利用設置斷點的方法來觀察FPU寄存器的情況,通常你用VC寫的代碼,不會被編譯為引用特殊指令集的代碼,雖然微軟號稱編譯器支持這些指令。所以你必須用內聯匯編方法來調用這些指令以優(yōu)化程序,充分利用資源。示例中的代碼調用了FPU處理器的指令,使操作浮點數的能力被充分發(fā)揮。但當然你還可以調用3DNOW!指令,SSE,SSE2等指令,但筆者沒有試過,如果你有什么新的發(fā)現,還望賜教,再此先謝了!

  總的來說內聯匯編提高了速度,尤其是游戲編程,更應該努力使用內聯匯編,把CPU充分榨干,但壞處就是有些低端的機器無法運行,兼容性差。同時微軟又號稱,編譯器不會去優(yōu)化你寫的匯編碼,他只是簡單的翻譯為等價的機器碼,優(yōu)化的事情交給你自己來完成,所以你不但得是C++高手,同時還得是匯編高手。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

雀巢公司(Nestle)表示,已經同意從星巴克(Starbucks Corp)手中收購Seattle's Best Coffee品牌,以加強該公司在美國的咖啡業(yè)務。雀巢公司是雀巢咖啡(Nescafe)和Nespresso...

關鍵字: TTL ST SE AFE

南京2022年10月19日 /美通社/ -- 10月16日是第42個世界糧食日,今年世界糧食日的主題是"不讓任何人掉隊,更好生產、更好營養(yǎng)、更好環(huán)境、更好生活",向全社會倡導愛惜糧食,拒絕浪...

關鍵字: 西門子 SE OS 可持續(xù)發(fā)展

云頂新耀宣布其合作伙伴Providence Therapeutics Holdings Inc.的mRNA新冠候選疫苗PTX-COVID19-B在評估其安全性、耐受性和免疫原性的II期研究中取得了積極的頂線結果。云頂新耀...

關鍵字: VI OV IDE CE

強生公司(Johnson & Johnson)公布最近結束的季度銷售額和利潤實現增長,即使美元走強和勞動力成本上升削弱了業(yè)績。這家保健用品公司周二下調了全年銷售指引,因美元相對于全球其他貨幣的上漲帶來的持續(xù)影響。...

關鍵字: JOHNSON SE OS

百奧賽圖(北京)醫(yī)藥科技股份有限公司的全資子公司祐和醫(yī)藥科技(北京)有限公司宣布與臨床階段的美國生物制藥公司Syncromune達成協議,共同開發(fā)和商業(yè)化基于Syncrovax?技術的瘤內免疫療法。Syncrovax?平...

關鍵字: ROM OV

阿布扎比和沙特正在權衡,是否在瑞信(Credit Suisse)股價低迷之際,對該行的投資銀行和其他業(yè)務進行投資。阿聯酋和沙特在分別探索通過各自的主權基金,例如阿布扎比穆巴達拉發(fā)展公司和沙特公共投資基金(PIF)進行潛在...

關鍵字: MICHAEL UI SE PI

慕尼黑2022年10月17日 /美通社/ -- TUV南德意志集團(以下簡稱"TUV南德")在EcoVadis全球企業(yè)社會責任評級中以總分71分榮獲金獎。...

關鍵字: OV ADIS BSP COM

摩根大通(JPMorgan Chase)首席執(zhí)行官戴蒙(Jamie Dimon)預測,美國經濟可能在明年陷入衰退。他警告稱,經濟低迷可能在信貸市場引發(fā)“恐慌”,令美國股市價值再蒸發(fā)20%?;ㄆ旒瘓F(Citigroup)首...

關鍵字: CE SE MORGAN GROUP

本文中,小編將對無線模塊予以介紹,如果你想對無線模塊的詳細情況有所認識,或者想要增進對它的了解程度,不妨請看以下內容哦。

關鍵字: 無線模塊 寄存器 處理器

據全球最大石油生產商沙特阿美(Saudi Aramco)稱,全球石油市場依然緊張。對于一個仍然嚴重依賴化石燃料的世界來說,這不是一個好兆頭。沙特阿美CEO Amin Nasser表示,如今閑置產能非常低。如果亞洲重新開放...

關鍵字: NAS RAM SE CE

嵌入式教程

6897 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉