При запуске программы, написанной на сборке, я получаю ошибку Illegal instruction
. Есть ли способ узнать, какая команда вызывает ошибку, без отладки, потому что машина, на которой я запущена, не имеет отладчика или какой-либо системы разработки. Другими словами, я скомпилируюсь на одной машине и запускаю другую. Я не могу проверить свою программу на машине, которую я компилирую, потому что они не поддерживают SSE4.2. Машина, на которой я запускаю программу, все равно поддерживает инструкции SSE4.2.
Я думаю, это может быть потому, что я должен сказать ассемблеру (YASM), чтобы узнать инструкции SSE4.2, так же, как мы делаем с gcc, передав ему флаг -msse4.2
. Или вы считаете, что это не причина? Любая идея, как сказать YASM распознать инструкции SSE4.2?
Может быть, я должен захватить сигнал SIGILL, а затем декодировать SA_SIGINFO, чтобы узнать, какую незаконную операцию выполняет программа.