移位指令在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 處理檔案上傳時的訊息格式轉換問題
- 在 React 中處理資料流問題的一些思考React
- 如何處理RabbitMQ 訊息堆積和訊息丟失問題MQ
- 工作中遇到的一些問題和處理
- Kafka叢集訊息積壓問題及處理策略Kafka
- 如何處理Docker的錯誤訊息request canceled:Docker代理問題Docker
- Android中的非同步訊息處理機制Android非同步
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 打Oracle PSU時碰到的一些問題處理Oracle
- Kafka中消費者延遲處理訊息Kafka
- MPLS RSVP訊息處理——VecloudCloud
- playwright 在 Centos 的安裝和問題處理CentOS
- WIN32傳送自定義訊息Win32
- nodejs在自然語言處理中的一些小應用NodeJS自然語言處理
- KafkaConsumer對於事務訊息的處理Kafka
- .net core 訊息流處理流程
- 如何處理錯誤訊息PleaseinstalltheLinuxkernelheaderfilesLinuxHeader
- 面試官問:Kafka 會不會丟訊息?怎麼處理的?面試Kafka
- 使用 pytz 處理 Python 中的時區問題Python
- AD模數轉換(ADC)在音訊處理中的詳細深度講解音訊
- RocketMQ的事務訊息處理【half-message】MQ
- 通訊訊號處理的一些基本常識
- Oracle資料庫中的逐行處理問題NEOracle資料庫
- 訊息粘包 和 訊息不完整 問題
- 訊息中介軟體消費到的訊息處理失敗怎麼辦?
- 實際業務處理 Kafka 訊息丟失、重複消費和順序消費的問題Kafka
- 訊息稱 AMD 銳龍 7000 處理器因 BIOS 問題延期至 9 月 27 日上市iOS
- [轉][翻譯]深入理解Win32結構化異常處理(三)Win32
- [轉][翻譯]深入理解Win32結構化異常處理(一)Win32
- 處理python中的訊號Python
- Objective-C中的訊息轉發Object
- 雲桌面使用中經常出現的一些問題該如何去判斷和處理
- [git] git問題處理Git
- golang json處理問題GolangJSON
- Android應用程式訊息處理機制Android
- 原始碼分析:Android訊息處理機制原始碼Android
- Python語音訊號處理的一些kitPython音訊
- 如何用 Golang 的 channel 實現訊息的批量處理Golang
- 如何用 Golang 的 channel 實現訊息的批次處理Golang