GCC のインラインアセンブラでは出力 (output operands) リスト、入力 (input operands) リストの他に、アセンブラブロックの中でどのレジスタが破壊されるか(つまり、どのレジスタをコンパイラ側で復元しなければいけないか)を指定する 破壊 (clobber) リストを指定することができます。
Read the rest of this entry
主語を大きく取りすぎている可能性がある(実際に確認したのは「Mac の i386/x86_64 をターゲットとする、Xcode に含まれている Clang のインラインアセンブラ」だけ)のですが、記事タイトル通りのことになります。
Read the rest of this entry
その2の続き
Intel 記法と Input Operand (の一部の制約)は併用できないわけですが、手持ちのソースを AT&T 記法に変換するのもチョー大変なので別の方法を。
Read the rest of this entry
同一 asm 句内に定義がある場合はいいのですが、別の asm 句に定義があると処理できません。
Read the rest of this entry
その1の続き
一つ重要なテストを忘れていました。 Extended Asm の Input Operand です。
Read the rest of this entry
Unix の ld コマンド(GNU の ld コマンド固有かもしれないけど)には --whole-archive というオプションがあって、スタティックライブラリの中のオブジェクトファイルを、どこからも参照されていなくても出力ファイルに含めることができます。これは、スタティックライブラリをシェアードライブラリに変換する手法としても知られています。
で、Visual C++ の場合に同様のことをやる方法ですが、バージョンによってちょっと違います。
Read the rest of this entry
- 性能向上
-
- UQY2, UQRG, UQRA: エンコードを高速化した。
Read the rest of this entry
2017年01月にいただいた寄付は以下の1件です。ありがとうございました。
| 日付 |
お名前 |
金額 |
| 01/14 |
Jean-Philippe Scotto Di Rinaldi |
3,000円 |
なんでフランスから円建てで来てるんだろう…と思ったけど、ユーロ圏(というか日本円でも米ドルでもない)の人だとドル経由にするより直接円にした方がいいという判断は間違いではないのかも。
なお、2016年11月から12月には寄付はありませんでした。
結論から言うと、インラインアセンブラ部分の先頭に .intel_syntax noprefix と書く(だけ)。 -masm=intel オプションは付けなくてもいいが、GCC との互換性を考えると付けるべき、となります。(Clang しか考えないなら付けなくてもいい)。
以下経過と詳細な挙動。環境は CentOS 7 + Clang 3.5.2 です。
Read the rest of this entry
GCC には -wrapper オプションというのがあり、サブプロセスを起動するときのラッパーを指定することができます。
Read the rest of this entry