2
我是LLVM的新手,理解LLVM的指令生成。作爲其中的一部分,我試圖轉換一個基本的布爾指令來直接使用內存寄存器作爲操作數。例如,在下面的IR中,我希望and
操作使用%a
和%b
而不是%11
和%12
。將涉及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
指令,或者是有另一種更簡單的方法?
'%a'和'%b'是指針,將它們組合在一起意味着不同於將從它們加載的值進行「與」運算。那真的是你想要做的嗎? – harold
我想獲取%a和%b指向的值作爲指令本身的一部分。我正在尋找像這樣的指示。 %13 =和i32 *%a,i32 *%b。這是爲了理解我是否可以在刪除兩條加載指令之前,通過直接獲取指針%a和%b的內容。 –
好了,無法做到,那麼通過指針加載和存儲只能顯式完成 – harold