問題タブ [intel-tsx]
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.
c - これらの rtm トランザクションが奇妙な動作をするのはなぜですか?
rtm トランザクションを使用しようとしています。組み込み関数を使用して単純なトランザクションを実装し始めました。しかし、次の行は常にゼロを返すことがわかりましたが、トランザクションが正常に開始されるには-1である必要があります。
int status = _xbegin();
次に、if..elseをループに入れてこのコードに到達しようとしました:
コードの出力は「000111」で、最初のトランザクションが失敗する理由が理解できませんが、2 番目のトランザクションは失敗しません。
また、最初のトランザクションで printf 入力を変更すると、2 番目のトランザクションはまったく開始されず、次の変更されたコードの出力は"0000"になります。
printf 行の 1 つを削除しても同じことが起こります。
出力がこのようなものである理由と、問題を解決する方法を理解したいですか? immintrin.h を使用し、"gcc -mrtm" を使用してコンパイルすることに注意してください。
assembly - アセンブラ xbegin raise 不正な命令
xbegin を呼び出すと、アセンブリ コードで Illegal Instruction が発生します。
何か問題ある?
これが私のコードです。
main.c
rtm.S