Я читаю код сборки, пытаясь понять, что он делает (это вызов, поэтому ничего злонамеренного). На одной строке имеется следующая инструкция:Сборка инструкции cmp, которая имеет 3 аргумента
ЧМК d, [EAX], 0DADADADA
Я потратил возрасты на Google и не могу понять это, я знаю, что вы не можете сравнить 3 значения так Я знаю 0DA .... часть - это то, что мне не хватает. Я нашел статью, которую я не могу найти снова, предполагая, что это связано с заполнением пустой памяти, но не уверен, любая помощь будет оценена по достоинству.
Это довольно подозрительно. 'cmp' имеет ровно 2 входных операнда, и он неявно устанавливает флаги состояния как единственный выход. Плюс, что '0DADADADA' тоже выглядит плохо: нулевой столбец должен идентифицировать его как восьмеричное число, а цифры, очевидно, шестнадцатеричные. – EOF
Ведущий ноль идентифицирует его как число; независимо от того, является ли оно восьмеричным или нет, это вопрос определения ассемблера, и это, очевидно, шестнадцатеричная константа. –
@IraBaxter: Ну, обычно шестнадцатеричные литералы имеют префикс «0x ...», а восьмеричные - ноль. Этот вопрос * может * относиться к ассемблеру, который использует разные соглашения, но точный ассемблер не упоминается. – EOF