2017-08-13 25 views
2

私はLLVMが新しく、LLVMの命令生成を理解しています。これの一環として、私は、オペランドとしてメモリレジスタを直接使用するための基本的なブール型命令を変換しようとしています。たとえば、以下のIRでは、and操作でと%12の代わりに%a%bを使用したいと考えています。 CPUレジスタを含む命令をメモリ命令に変換する

%11 = load i32, i32* %a, align 4 \n 
%12 = load i32, i32* %b, align 4 \n 
%13 = and i32 %11, %12\ 
store i32 %13, i32* %d, align 4\n 

は、私はこのための新しい and命令を記述する必要がありますか、または別の簡単な方法はありますか?

+0

'%a'と'%b'はポインタであり、それらを一緒にANDingすることは、それらからロードされた値をAND結合すること以外の何かを意味します。それは本当にあなたがしたいことですか? – harold

+0

%aと%bが指す値を命令自体の一部として取り出したいとします。私はこのような教訓を探しています。 %13 =およびi32 *%a、i32 *%b。これは、前に2つのロード命令を取り除くことができ、ポインタ%aと%bの内容を直接取得することができるかどうかを理解することです –

+5

それでは実行できない、ポインタによるロードとストアは明示的にしか実行できません – harold

答えて

0

私はそれが実行可能だとは思わない。明示的なロードやストアがなければ、LLVMのメモリにアクセスすることはできません。