問題タブ [illegal-instruction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
22458 参照

g++ - 「違法な指示:4」がOSXLionに表示されます

一部のC++アプリケーションはOSXSnow Leopardでシームレスにコンパイルおよび実行されますが、最近OS X Lionに変更しました。ここでは、コンパイルエラーはありませんが、実行しようとすると「不正な命令:4」というエラーが表示されます。手がかりがない、理由は何でしょうか?

PS:

これらは私が使用するリンクフラグです

これは私がするときに私が得る出力ですsudo truss executable

PS2:前述のリンクフラグを削除すると、プログラムはエラーなしで実行されます。しかし、実際のデータをプログラムに入力すると、

このプログラムはスタックに問題があったので、増やす必要があったことを覚えています。Linuxではこれを実行して動作します

しかし、OS Xではそれが機能しなかったので、前述のリンクフラグを使用しましたが、OS X Snow Leopardで問題はなかったので、OS X Lionでもスタックオーバーフローの問題があるようですが、リンクフラグは解決しませんこれ。何ができますか?

0 投票する
1 に答える
219 参照

assembly - Intel VEX プレフィックス、L ビット値がドキュメントに従って動作しない

Intel 命令セット リファレンスは、addsd命令を提供します。

ご覧のとおり、L ビットは無視されます (0 または 1 のいずれか)。

addsd xmm0, xmm0, xmm0のマシンコード:0xC4, 0xE1, 0x7B, 0x58, 0xC0

テストしましょう:

また、Visual Studio の逆アセンブラーも命令を認識します。

しかし、L ビットを 1に変更すると(0x7B は 0x7F に置き換えられます)、逆アセンブラは命令を認識せず、無効命令例外が生成されます。Intel のマニュアルにもかかわらず、L ビットは常に 0 でなければならないということですか?

0 投票する
1 に答える
733 参照

macos - エルキャピタンのKeras違法な命令4

こんにちは、keras を使用してニューラル ネット分類器のプロトタイプを作成しています。別の Mac マシンを正常に実行するコードを使用しましたが、職場の iMac で実行しようとすると、次のエラー メッセージが表示されます。

「不正命令:4」

インターネットで調べたところ、これは theano と、私が使用している Mac OS のバージョン (El Capitan の最新バージョンである 10.11.6) に問題があるようです。それを修正する簡単な方法はありますか。古いバージョンでコンパイラを実行できると読みましたが、その方法がよくわかりません。

ありがとう

0 投票する
2 に答える
1356 参照

python - ライブラリを Python に実行する際のエラー

http://npatta01.github.io/2015/08/10/dlib/に従って手順に従いますが、実行しようとすると (sudo を使用します)、

エラーを取り戻す。まず、エラーになったのは

8行目まで。今、エラーはありますがIllegal instruction (core dumped)、理由はわかりません。ライブラリを正しく追加するのを手伝ってください。

0 投票する
1 に答える
1223 参照

c++ - 64 ビット リリース モードのみのビット シフト不正命令

ここで入手可能な PoissonRecon コードを独自のメッシュ操作コードに統合していますが、ポアソン コードの octree 生成のすべてのビット シフト命令で「不正な命令」エラーが発生したため、統合されたコードを x64 でコンパイルできませんでした。

Visual Studio 2015 を使用していますが、問題は x64 でコンパイルされ、リリース モードでのみ発生します (つまり、x86 デバッグとリリース、および x64 デバッグで動作します)。

ビットシフト命令の 1 つの例として、Octree.inl の先頭で次のように定義されています。

そして、これらの変数は次の関数で使用されます。

この関数は次の行で中断します

これをさらに分割したところ、問題はビットシフト自体であることがわかりました。つまり(var)<<OffsetShift1;、これにより「不正な命令」エラーが発生します。

OffsetShift1 は単に「5」であるため、これは(var)<<5;期待どおりに動作するものと同じであることに注意してください。

考えられる回避策は、単純#defineにこれらの変数をすべて上部に配置することです (問題は解決します) が、これは次のような他のビット シフトの問題を解決しません。

私はstatic_cast<long long>すべてを試しましたが、オーバーフローの問題ではありません。さらに奇妙なことに、ビットシフトの前に (リリースモードで) ブレークしてから操作を強調表示すると、デバッガーは正しい結果を教えてくれます (たとえば、デバッガーd = 5では 32_startAndWidth1 << d返します) が、実際に操作をステップオーバーすると、 「不正な命令」エラー。

プログラムはデバッグ モードで正しく動作するため、リリース モードですべての最適化を削除しようとしましたが、それでも同じエラーが発生します。私が見つけた唯一の回避策は、すべてのビットシフト操作をpow()代わりに置き換えることです。それは機能しますが、bitばかげているようです。