llvm - LLVM 指针作为函数参数
问题描述
我正在尝试将全局变量作为参数传递给函数并在函数内部修改此变量
我的 IR 代码如下
@n = common global i32 0
declare i32 @readln(i32)
declare i32 @writeln(i32)
define i32 @main() {
entry:
%n = load i32, i32* @n, align 4
%calltmp = call i32 @readln(i32 %n)
%n1 = load i32, i32* @n, align 4
%calltmp2 = call i32 @writeln(i32 %n1)
ret i32 0
}
readln 在单独的模块中定义为 C 函数
int readln(int * x) {
return scanf("%d", x);
}
跑步时我得到segmentation fault 11
我做错了什么?
解决方案
评论是正确的。以此为灵感
Builder.CreateLoad(Builder.CreateIntToPtr(Value,Type::getInt32PtrTy(TheContext)), "ptr");
Builder.CreateIntToPtr(Value,Type::getInt32PtrTy(TheContext));
推荐阅读
- jetbrains-ide - 如何在 GoLand 终端中使用 IDE 键盘映射
- oauth-2.0 - AWS Cognito - 在授权访问 api 网关时使用范围
- java - Python多线程执行多个jar文件需要更长的时间
- gitlab - 如何将现有的 gitlab 项目复制到新项目,但没有任何代码 - 只有它的设置?
- python - Django CASCADE 和 post_delete 交互
- sql - T-SQL UPDATE 语句影响的记录少于 select 语句
- javascript - ckeditor第一次尝试不发送数据,初始值没有更新?
- python - sklearn.metrics 中产生的精度和召回率错误的 F1 分数
- c# - 将字符串转换或显示为货币
- deepsecurity - 如何在 Python 代码中为 Trend v12 DSM SAAS API 调用传递反恶意软件电子邮件自定义值