2eb151cb8084a7566986e3e1507037dc 市場上不時傳出某家硬體廠商惡搞競爭對手的新聞,但是此消息真實性相當難以查證,結果大多也只是雙方互相指責與澄清。Intel Compiler Patcher 這個不到 1MB 的小程式,宣稱能夠去除偵測 Intel 處理器的行為,避免程式碼從 Intel 編譯器出來之後,降低程式在非 Intel 處理器環境的執行表現。

1 個程式的誕生需要經歷數種階段,開發人員首先使用高階語言撰寫程式碼,譬如以 C∕C++ 撰寫,有時也會因為其它需要,使用低階組合語言撰寫。程式語言的高低階並非由執行效果或達成功能區分,而是以其表達方式接近機器碼或人類自然語言,譬如組合語言接近機器運作方式而劃入低階,C∕C++ 接近自然語言則劃入高階。

程式碼撰寫完畢並無法直接使用,須交由編譯器變更成機器碼,硬體才能夠執行。一般程式開發過程中,開發人員通常並不會將程式碼撰寫於文字編輯器,而是在開發環境下撰寫。此開發環境提供函式庫、即時除錯、程式碼建議、執行階段追蹤等功能,方便開發人員調用。

由於當今處理器擁有多種的硬體加速功能,有時程式本身會為不同硬體準備不同的程式碼,譬如程式在支援 SSE2 指令集的 x86 處理器執行,就會使用針對 SSE2 最佳化的程式碼,若是 x86 處理器不支援 SSE2 指令集,則改採一般的程式碼,執行速度就會比 SSE2 指令集加速來得慢。

市場上早已有傳聞指出,Intel 編譯器編譯後的程式,除了會依據處理器擴增指令集的不同,選擇不同的程式碼執行之外,還會偵測處理器的廠牌,藉以降低程式在它牌處理器的表現。無論此項消息正確與否,已有開發人員撰寫出修補程式,宣稱能夠消彌非 Intel 處理器運作表現不佳的現象。

經由 Intel 編譯器編譯出來的程式,會確認處理器 Vender ID 是否為 GenuineIntel,符合則傳回 1 表示布林代數的真值,其它結果則傳回 0 表示假值。接著程式就以 1 或是 0 進行判斷,若為 1 則按照處理器支援那些擴增指令集,挑選適合的程式碼執行,若為 0 則一律採用最慢的程式碼。


▲Intel Compiler Patcher 程式介面。

開發者 Tronix 撰寫 Intel Compiler Patcher 修補程式,用以尋找電腦程式是否具備此種判斷程式碼,找到後可進行修補。程式為英文介面,點選左上角 Scan 按鈕即會跳出視窗選擇欲掃描資料夾,掃描後於 File List 視窗中顯示清單,便可勾選想要修補的檔案,按下上方 Patch 按鈕即可進行修補。

此程式預設掃描大小介於 500Byte~100000000Byte 檔案,副檔名包含 .exe、.dll、.acm、.ax、.cpl、.ocx,若要自行變更掃瞄範圍,可點選 Options 進入選項頁面。筆者測試掃描 Windows 安裝分割區,得出的檔案數量並不多,修補 PhotoImpact X3 和 Adobe Reader 11 也未曾出錯,但電腦採用 Intel 處理器無從得知是否有加速效果。此程式在修改前會複製 1 份檔案,將檔案存放於同個資料夾,附檔名變更為 .orig,以便修補出錯時能夠覆蓋回來。


▲Option 頁面調整選項,除了上方的檔案大小和副檔名之外,其餘選項不建議變動。

此程式讀我檔案顯示 2010 年,也就是大約在 5 年前就出現在網路上,近日則因 MajorGeeks 收錄又獲得關注(請點選 Download@MajorGeeks 字樣)。近年也曾傳出消息,表示 Intel 改採其它辨識方式,此修改程式無法發揮作用。任意修改程式有其風險,可能會導致電腦毀損或是違反安裝程式時簽下的終端使用者授權協定,是否使用端看讀者自行判斷。

延伸閱讀

關於Android L 的五個冷知識,到底還有什麼是我們不知道的

x86手機跑Android好嗎?x86處理器相容ARM架構App的秘密

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則