Эй, я знаю, что задавал много вопросов ... но не так много ресурсов по этому вопросу в Google, так что, надеюсь, это поможет будущим людям, которые пытаются делать подобные проекты, я всегда тоже ищу решения Google, но я никогда не выполняю поиск на первой странице.,
Я посмотрел то руководство по Intel, которое опубликовал Алекс, мне кажется довольно чуждым http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-2a-2b-instruction-set-a-z-manual.html
Так что я подумал, что знаю, как работает простой DIV
код операции.Так как это просто divide
в конце концов.У меня не было проблем с добавлением ADD
, SUB
, конечно, IMUL
были проблемы, которые вы, ребята, помогли мне в этом.Кажется, DIV
относится к той же категории, что и IMUL
по уровню сложности.
Ну, без использования руководства, просто выполняю тесты для самостоятельной отладки с OllyDbg.
Я обнаружил, что ответ делениявсегда хранится в EAX
.Выяснил, остальное также хранится, кто знал, хранится в EDX
.
Который из изучения этого алгоритма чрезвычайно важен, кто знал, что кто-то использовал бы остаток от деления случайных чисел, чтобы сгенерировать переход от 0-10 довольно умный ... Но все же мой вопрос.
Это уже странно, я никогда не думал, что шестнадцатеричные числа деления будут иметь остатки, десятичные точки даже не принадлежат им.
DIV ECX
будет похоже на
regs.d.eax /= regs.d.ecx;
regs.d.edx = regs.d.eax % regs.d.ecx;
Я думал, может бытьсначала получим остаток ... будут просто вещи.
regs.d.edx = regs.d.eax % regs.d.ecx;
regs.d.eax /= regs.d.ecx;
Хорошо, я едва работаю с математическим программированием, так что это немного сбивает с толку.Я скорее парень, который будет хранить результат в строке, а затем делить ее на десятичную точку, и вот как я получу остаток, да, я знаю, что он медленный, и он выбирает легкий путь ... и я сам против использования строкиоперации в математическом коде.
Хорошо, хорошо .. глядя на тот код C, который я там поместил .. вероятно, придется хранить как EAX
, так и ECX
до деления во временных переменных .. или сделать остатоксначала код, потом второй код деления.Я не знаю.
Хорошо, я посмотрю, может быть, вы, ребята, можете дать мне лучший ответ, возможно, это невозможно сделать в одной строке, но, возможно, я допустил несколько ошибок ... Я не могу на самом деле проверитьто, что я делаю сейчас из-за многих других вещей, которые мне нужно исправить, прежде чем я смогу скомпилировать программное обеспечение.