調用一個函數我想要定義在LLVM組件,其採用作爲自變量的函數:LLVM組件:使用可變參數
- 的標識符的一個子功能
- 一個可變參數
這函數應該做一些預處理,爲標識符找到正確的函數並使用可變參數來調用它,並返回其結果。
喜歡的東西:
define ??? @1 (i32 %identifier, ...vararg...)
{
switch i32 %identifier, label %def, i32 1, label %a
a:
%1 = tail call @function_for_a, ...vararg...
ret ??? %1
def:
ret void
}
這似乎並不可能。有沒有辦法做到這一點呢?我認爲應該可以使用普通的彙編程序。
這是爲了面嚮對象語言的調度功能。我寧願它速度快。
我想一個辦法:
- 從堆棧中刪除使用@ 1
- 分支到第二功能的第一個參數。
第二個功能將在隨後發生的第一(這是一個尾調用)的執行,但沒有被確切知道的第一個函數(第一函數的可變參數)參數列表。
有沒有可以在C語言中編寫這樣的代碼的選項,用clang/llvm-gcc編譯它並反彙編'.bc'? – osgx
有一個llvm反彙編器:'llvm-dis'。我想要做的事不能在C中完成。 – Mildred