Вопрос об интервью Microsoft ASM?

Необходимо использовать подготовленный интерфейс операторов sqlite. В основном идея состоит в том, что Вы готовите оператор с заполнителем для Вашего блоба, затем используйте один из связывать вызовов для "связывания" данных...

SQLite Подготовленные Операторы

5
задан starblue 17 October 2009 в 08:12
поделиться

3 ответа

Находит абсолютное значение

Он работает только с AX / EAX - Он уничтожает регистр (DX / EDX) - Это может быть сделано быстрее на Pentium и более новых процессорах Проблема в CWD инструкция. Чтобы заменить CWD, вы можете использовать эту комбинацию: mov dx, ax sar dx, 15 (Если используются 32-битные регистры, вместо этого сдвигается значение 31).

cwd - преобразовать слово в двойное слово.

xor ax, dx => ax = ax xor dx

1
ответ дан 13 December 2019 в 05:38
поделиться

cwd xor ax, dx

Преобразовать слово в AX для двойного слова в DX: AX. Знак сохранен, ценность сохранена. Итак, если AX> = 0, DX = 0 и если AX <0, DX = -1.

XOR ничего не делает, если AX == 0.

Если AX <0, XOR меняет все биты AX на противоположные. Затем SUB добавляет 1 (или вычитает -1, независимо от того: P) к AX. Это способ вычисления дополнения двоичного числа до 2.

В общем, эта последовательность инструкций помещает абсолютное значение AX в AX и устанавливает DX в соответствии со знаком.

7
ответ дан 13 December 2019 в 05:38
поделиться

Это функция abs (из ax ).

Если ax положительно, то dx станет 0 , и ничего не изменится.

Если ax отрицательно, dx будет 0xffff , что приведет к ax ~ ax - (-1) , что является хорошо известный метод вычисления neg в представлении с двумя дополнениями.

4
ответ дан 13 December 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: