В настоящее время я пытаюсь понять DIV
операцию в контексте следующего кода сборки:x86 Сборка: операция DIV с отрицательными значениями
push ebp
mov ebp, esp
mov eax [ebp+0x8]
mov edx, 0x0
div [ebp+0xC]
mov esp, ebp
pop ebp
ret
мы должны вычислить возвращаемое значение. Функция будет вызываться со следующими значениями:
- FUNC (3,24)
- FUNC (24,3)
- FUNC (24, -3)
- FUNC (-1,2)
Результаты для 1) и 2) являются 0 и 8, на мой взгляд.
Теперь я хочу рассчитать результаты для 3) и 4). Как я знаю, операция DIV
работает с целыми числами без знака, мой первый вопрос заключается в том, как представить -3 и -1?
Я бы действовать следующим образом:
- построить комплимент двоек из Param2
- выполнить бинарный деление
Относно третьей ситуации:
-3 находится в два: 11111101
так
ДИВ: (24) 0001100/11111101
Что бы результат?
И четвертый:
-1: 11111111
так
DIV: (-1) 11111111/10
Divison с 2 = SHR 1 - > 1111111 -> 127
Не могли бы вы помочь мне проверить результаты?
Я предполагаю, что люди, следующие за HTML-тег будет весьма удивлен этим вопросом ... –
@rcgldr: 'DIV' это беззнаковое форма обучения, поэтому округление к нулю и отрицательная бесконечность несколько трудно отличить. Я скорее думаю, что этот вопрос требует «IDIV» – doynax