Dowolny sposób na przeniesienie 2 bajtów w 32-bitowym x86 przy użyciu MOV bez powodowania przełączenia trybu lub przeciągnięcia procesora?

Jeśli chcę przenieść 2 niepodpisane bajty z pamięci do rejestru 32-bitowego, czy mogę to zrobić za pomocąMOV instrukcja i bez przełącznika trybu?

Zauważam, że możesz to zrobić za pomocąMOVSE iMOVZE instrukcje. Na przykład zMOVSE kodowanie0F B7 przenosi 16 bitów do rejestru 32-bitowego. Jest to jednak instrukcja 3-cykliczna.

Ewentualnie mogę przenieść 4 bajty do rejestru i jakoś jakoś CMP.

Jaka jest najszybsza strategia pobierania i porównywania 16-bitowych danych w 32-bitowym x86? Zauważ, że najczęściej wykonuję operacje 32-bitowe, więc nie mogę przełączyć się w tryb 16-bitowy i tam zostać.

FYI dla niewtajemniczonych: problemem jest to, że 32-bitowe procesory Intel x86 mogąMOV Dane 8-bitowe i dane 16-bitowe LUB 32-bitowe w zależności od tego, w jakim trybie się znajdują. Tryb ten nazywany jest ustawieniem „D-bit”. Możesz użyć specjalnych prefiksów 0x66 i 0x67, aby użyć trybu innego niż domyślny. Na przykład, jeśli jesteś w trybie 32-bitowym i poprzedzasz instrukcję 0x66, spowoduje to, że operand będzie traktowany jako 16-bitowy. Jedynym problemem jest to, że powoduje to duże uderzenie wydajności.

questionAnswers(2)

yourAnswerToTheQuestion