首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LLVM-IR数组指针分配

LLVM-IR数组指针分配
EN

Stack Overflow用户
提问于 2014-01-13 22:14:23
回答 2查看 1.8K关注 0票数 0

在C++/C中,您可以这样做:

代码语言:javascript
复制
unsigned char A[12];
unsigned int *B;
int *C;
B = malloc(sizeof(unsigned int));
C = malloc(2*sizeof(int));
A[0] = *B;
A[4] = *C;
//Then go on to access A byte by byte.

我想知道在LLVM中这是可能的,还是会立即抱怨类型的问题。我想我会看看有没有人试过这个例子。我会把GEP A的第0位定位为i8*,然后B和C作为i32*。如果可能的话,我有点搞不懂该怎么做。

提前谢谢。

更新:

好的,如果我为*B和C,C1添加了初始化,那么LLVM /C / C++的答案会改变吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-13 22:47:50

LLVM有bitcast指令,它通常用于将一种类型的指针转换为另一种类型的指针-例如,i32*i8*

因此,例如,如果您想访问一个4字节数字的第3字节,那么执行以下操作是完全合法的:

代码语言:javascript
复制
%bytes = bitcast i32* %num to i8*
%third_byte = getelementptr i8* %bytes, i32 2

当你做那样的事的时候要记住你的恩典。

是的,您可以使用这种技术从数组中获取指向特定位置的指针以及storeload值,从而使您能够复制整个示例。

票数 1
EN

Stack Overflow用户

发布于 2014-01-13 22:17:07

不是的。这在C/C++中也是不可能的。不应将未初始化的变量赋值给另一个变量。它调用未定义的行为*B*c未初始化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21102434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档