Каков самый быстрый способ обнулить одну ячейку памяти в x86? Обычно я это делаю так:
C745D800000000 MOV [ebp-28], 0
Как видите, у него довольно короткая кодировка, поскольку в качестве константы используются все 4 байта. С простым регистром я могу использовать MVZE
, который более компактен, но MVZE
не работает с памятью.
Я подумал, может быть, очистить регистр, а затем MOV
значение регистра в память. Тогда это будут две инструкции, но всего 5 байтов вместо одной 7-байтовой инструкции, указанной выше. Это может быть предпочтительнее, следуя правилу «короче, обычно быстрее».
xor [ebp-28], [ebp-28]
. - person Linuxios   schedule 16.03.2013movs
имеет указатели как источника, так и места назначения. - person Carl Norum   schedule 16.03.2013push
- еще одна инструкция памяти. - person Igor Skochinsky   schedule 18.03.2013mov
потребуетimm32
)? - person Peter Cordes   schedule 02.02.2019