/ / Чи можна зберегти надлишкові префікси для інструкції з монтажу в NASM? - збірка, x86, nasm

Чи можна зберегти резервні префікси для інструкції з монтажу NASM? - монтаж, x86, наст

Мені потрібно перевірити, чи правильно емулятор Windowsідентифікує та обробляє занадто довгу команду (довжиною більше 15 байтів). Я компілюю код з NASM. Єдиний спосіб, який я знаю, це вказати занадто довгу команду, додавши в інструкцію префікси. Припустимо, що я роблю наступне:

rep O32 rep O32 rep O32 rep O32 rep O32 mov eax, [fs:0]

У цьому випадку я повинен отримати 16-байтове навчання, оскільки mov eax, [fs:0] є 6-байтовою командою, плюс 10 O32 і rep префікси дорівнюють 16 байтам.

Принаймні, що "теорія ... але коли я компілюю це з NASM і розібрати в результаті двійковий, що я знаходжу, що непотрібні префікси отримали зірвав звідти: тільки 1 rep префікс залишається і очевидно fs префікс сегмента. Таким чином, загальна довжина команди зменшується до 7 байт. Я думаю, це те, як він повинен працювати, але чи є спосіб зробити це так, щоб довжина інструкції фактично зростала за межі?

Відповіді:

0 для відповіді № 1

Ви стверджуєте це mov eax, [fs:0] є 6-байтовою командою. Це означає, що ви використовуєте 16-розрядний код.

Таким чином mov ax,1 буде використовувати 3 байти. Ви додали 12 префіксів операндів. Це складає до 15, що досі є цілком законним. Тому ви ще не перевірили свій "емулятор вікон".

Якщо наведене рішення є 32-бітним кодом, то загальна сума складе 16 байт.

Просто цікаво: емулятор скаржився?