Найдите, какая инструкция сборки вызвала ошибку Illegal Instruction без отладки

При запуске программы, которую я написал на ассемблере, я получаю Недопустимая инструкция ошибка. Есть ли способ узнать, какая инструкция вызывает ошибку, без отладки, потому что на машине, на которой я работаю, нет отладчика или какой-либо системы разработки. Другими словами, я компилирую на одной машине и запускаю на другой. Я не могу протестировать свою программу на компилируемой машине, потому что они не поддерживают SSE4.2. Тем не менее машина, на которой я запускаю программу, поддерживает инструкции SSE4.2.

Я думаю, это может быть связано с тем, что мне нужно указать ассемблеру (YASM) распознавать инструкции SSE4.2, точно так же, как мы делаем с gcc, передавая ему флаг -msse4.2. Или вы считаете, что это не причина? Любая идея, как сказать YASM распознавать инструкции SSE4.2?

Возможно, мне следует перехватить сигнал SIGILL, а затем декодировать SA_SIGINFO, чтобы увидеть, какую недопустимую операцию выполняет программа.

28
задан Ciro Santilli 新疆改造中心法轮功六四事件 21 April 2015 в 21:12
поделиться