這很簡單,但我還沒有弄清楚。彙編掩碼邏輯問題
這個問題是關於一個程序集mmx,但它是純粹的邏輯。
試想以下情形:
MM0: 04 03 02 01 04 03 02 01 <-- input
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01 <-- copy of input
after pcmpgtw MM0, MM1
MM0: FF FF 00 00 FF FF 00 00 <-- words where MM0 is greater than MM1 (comparing words)
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01
after pand MM0, MM2
MM0: 04 03 00 00 04 03 00 00 <-- almost there...
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01
我想是要知道補MM0的零點爲02,我想我會反轉MM0在第二步登記,變更FF的00年代和00的到FF的,然後做一個MM1,最後一個或合併這兩個。
如果我能得到:
MM3: 00 00 FF FF 00 00 FF FF
then, pand MM2, MM3
MM1: 04 03 00 00 04 03 00 00
MM2: 00 00 02 02 00 00 02 02
finally por MM0, MM1 would give me the desired outcome:
MM0: 04 03 02 02 04 03 02 02 <-- Aha!
總結,我怎麼可以得到MM3寄存器爲00 00 FF FF 00 00 FF?如何反轉這些位,證明在MMX寄存器中只有AND,OR,XOR和NAND指令可用?
任何答案非常感謝。謝謝。
所以......有什麼問題嗎?看起來你已經自己回答了。 –
在我的問題中,可以閱讀:「如果我能夠得到」,這意味着我還沒有,並正在問你如何。 – nunos