Как вызвать функцию со встроенной строкой с помощью LLVM - PullRequest
1 голос
/ 16 июня 2020

Я объявил функцию print, которая будет печатать только строковые значения:

declare i32 @printf (i8*, ...)

; Print
@.str_specifier = internal constant [4 x i8] c"%s\0A\00"
define void @print (i8*) {
  call i32 (i8*, ...) @printf(i8* getelementptr ([4 x i8], [4 x i8]* @.str_specifier, i32 0, i32 0), i8* %0)
  ret void
}

В настоящее время я использую ее так

; Example
@msg = internal constant [13 x i8] c"Hello World!\00"

define i32 @main() {
  call void @print(i8* getelementptr ([13 x i8], [13 x i8]* @msg, i32 0, i32 0))
  ret i32 0
}

Могу ли я вызывать при встраивании строковое значение? Что-то вроде:

call void @print(i8* "HelloWorld!\00")
...