移位指令在Win32訊息處理中的一些問題(轉)
大家在處理有些位元組拼裝的訊息時,一定是用Shr等指令來移位,這裡有一個小問題,要注意:
如WM_MOUSEWHEEL訊息,它的wParam的高位元組儲存了當前的滑鼠滾動的方向,-120表示向上滾動,120表示向下滾動,此時,這樣處理是錯的:
mov eax,wParam
shr eax,16
.if eax==-120
... ..
為什麼?因為移位指令移位的同時,把最高位也移動了,此時,符號位到了ax的最高位,結果判斷eax自然總是正數,此時,應該直接判斷ax,或使用擴充套件指令。如:
... ...
.if ax==-120
就行了,這一般只在高位或低位會為負的情況下注意,因為正數移位後判斷eax仍然行得通。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-928714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VCL中訊息處理初探 (轉)
- 處理檔案上傳時的訊息格式轉換問題
- 如何處理RabbitMQ 訊息堆積和訊息丟失問題MQ
- 在 React 中處理資料流問題的一些思考React
- 在SQLServer處理中的一些問題及解決方法SQLServer
- C#的訊息處理方法 (轉)C#
- Kafka叢集訊息積壓問題及處理策略Kafka
- 如何處理Docker的錯誤訊息request canceled:Docker代理問題Docker
- 處理鍵盤輸入訊息(轉)
- 工作中遇到的一些問題和處理
- 影象處理中的一些基本問題解釋
- C++ BUILDER 訊息處理的深入探索 (轉)C++UI
- VB與VC混合程式設計中處理訊息的方法 (轉)程式設計
- Looper中的訊息佇列處理機制OOP佇列
- 三、訊息的可靠處理
- php ActiveMQ的傳送訊息,與處理訊息PHPMQ
- IOS 訊息推送處理iOS
- Android中的非同步訊息處理機制Android非同步
- MFC應用程式中處理訊息的順序
- MFC動態建立控制元件的訊息處理 (轉)控制元件
- Kafka中消費者延遲處理訊息Kafka
- MPLS RSVP訊息處理——VecloudCloud
- Storm保證訊息處理ORM
- 靈活定義和處理SOAP頭訊息 (轉)
- 關於捕獲VCL沒有處理的Windows訊息 (轉)Windows
- weblogic中例外處理的問題Web
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- .net core 訊息流處理流程
- 面試官問:Kafka 會不會丟訊息?怎麼處理的?面試Kafka
- php使用mysqlnd引發的一些問題處理PHPMySql
- Go 語言的錯誤訊息處理Go
- 在PHP中怎麼解決大量資料處理的問題PHP
- 處理滑鼠離開視窗的訊息 (WM_MOUSELEAVE) (轉)
- textarea中內容處理問題
- WIN32傳送自定義訊息Win32
- 安卓微信視訊播放全屏問題處理安卓
- 深度解析VC中的訊息(中) (轉)
- 打Oracle PSU時碰到的一些問題處理Oracle