- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在使用 clang 生成 LLVM IR 代码时,我想使用 __attribute__((bitwidth(N)))
来定义自定义大小的整数类型。我在那里找到了一些信息 is no plan to support this attribute .但是,为 IR 生成(即程序集表示)支持这样的属性将非常有帮助。
我的用例:我想以尽可能小的努力为自定义微架构编写编译器*。该体系结构仅支持非常特定/不寻常的位宽。微架构的“程序”应该用 C 的有限子集编写。在这种情况下,有希望使用 clang 来生成 LLVM IR 并将其用作进一步处理的基础。如果可以使用 bitwidth 属性将有关数据类型的附加信息传递到下一步,那就太好了,如下例所示:
C 代码:
typedef int __attribute__((bitwidth(22))) int22;
int22 myVar = 0;
LLVM IR 程序集:
@myVar = global i22 0, align 3
; note that the align information is not relevant
; in my case, i.e. "align 4" would also be fine
也许有一些技巧可以为 IR“启用”此属性(恕我直言,实现起来并不难),或者有人拥有比我能找到的更新的信息(llvm bugzilla 条目现在相当旧)。
如果没有,也许有一些替代方法我可以如何“附加”关于 C 中定义的数据类型的附加信息。
*) 将自定义微架构添加到 clang(以便可以使用 -target 选项)被归类为非常复杂。真的吗?
最佳答案
向 clang 添加新目标并不难。查看现有目标,看看它包含在 clang 中的位置,然后“克隆”该方法。然而,目标“通常”定义了一个严格的数据布局,由后端控制程序集的生成。
bitwidth 属性将要求后端处理任意大小的类型(例如,如您所示的具有 22 位的 int)。 AFAIK,LLVM 中的后端都不能处理这个问题(如果我错了,有人可以纠正我)。
因此,如果您想要位宽支持,您可以将此属性添加到具有不同目标的 clang 中,并将其限制为仅针对此目标。
另一种方法:如果您只需要 LLVM IR,并且从现在开始您可以做自己的事情,也许您需要的只是向生成的 IR 添加一些元数据,即,您将自定义属性带到 clang 中,告诉clang 将元数据添加到 destinct 类型(例如,你说 i32 应该是 22 位宽)。您可以查看 clang 代码并搜索对齐属性,将其克隆为位宽属性,然后在代码生成中处理您的属性以将元数据添加到模块。
关于clang:生成 LLVM IR 时支持位宽属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27562835/
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (x, y) 坐标线。 关于language-agnostic -
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
有没有办法显示自定义宽度/高度的YouTube视频? 最佳答案 在YouTube网站上的this link中: You can resize the player by editing the obj
如何从此表单获取数据(数据的长表示): import pandas as pd df = pd.DataFrame({ 'c0': ['A','A','B'], 'c1': ['b',
我在让宽度为 900px 的页面在宽度低于 900px 的分辨率下看起来不错时遇到了一些麻烦。这包括智能手机等移动设备。看起来我在页面上放大了,但无法滚动或缩小。我的页面包装器被定义为以屏幕为中心。这
我有一个包含一个表的 div,它有另一个带有动态变化文本的 div。div 有样式 overflow: hidden; white-space: nowrap; text-overflow: elli
我一直在愚弄下面的html代码。我已将 div id ="mainWide"设置为 2500 像素的宽度,这比我的屏幕还宽,我希望在主浏览器窗口中有一个水平滚动条,而不是在 div block 本身中
当我的屏幕浏览器窗口在 992px-1199px 之间时,我的文章元素比它们的父 div (.wrapper) 更宽。所以在这个屏幕宽度下,面板重叠并且看起来不对。 在所有其他屏幕宽度下,我的代码都准
我在对齐某些行时遇到了一些问题。我正在显示一个占据视口(viewport) 100% 高度的部分。因此,当您在屏幕上查看此部分时,您只会看到此部分。 在这个部分中,我有一个标题和副标题。标题应显示在节
为什么表单输入字段比其父 div 宽?宽度应用于文本 div,但不应用于其中包含表单字段的 div。为什么会这样? See the livecode here. .parent { width:
我想让这个标题 100% 宽。我在 jsfiddle 上试过这个,但是左边和右边还有一些余量。 CSS: #header { background: url("../img/top-bg.png
我的页面宽度有问题。无论我尝试什么,它的左边或右边都有白边(默认情况下在右边,如果我使用 margin-right:0 则在左边)。如果我使用 margin:0 比它留在右边。尝试了我所知道的一切,但
我有一个带有背景图片的宽 div。 div 的宽度为 1100 像素,当浏览器窗口小于该宽度时,会出现滚动条。有什么办法可以避免滚动条吗?那不是任何黑客。现在我知道我可以把它放在 body image
我有一个您可以访问的应用程序 here .当您打开应用程序时,只需单击加号按钮,您就会看到一个带有搜索栏的模态窗口。 现在请执行这两个搜索: 搜索 1:AAA 搜索 2:AAE 您会看到,在 AAE
这个问题在这里已经有了答案: Does element width include padding? (5 个答案) 关闭 7 年前。 HTML CSS .wrap{widt
我正在尝试在工具栏中创建一个自定义显示,类似于 Xcode 工具栏中心的信息 Pane 。 我们如何创建一个宽度超过 32 点的 NSToolbarItem? 框架始终将其限制为 32 点,即使最小和
我想将df1转换成df2 旧示例数据框 df1 df1 长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359
我正在使用 JavaScript 代码在 FireBase/FireStore 中上传图像。 核心功能已经可以运行,我可以上传,但我还需要在上传之前检查图像的大小。这就是我很乐意获得帮助的地方。 以下
如何在 Tkinter 中设置/更改 ttk.Separator 对象的长度/宽度? ttk.Separator(self, orient='horizontal').grid(c
我有一个简单的问题。为什么 a 不会自动调整其内容的大小?像这样: Test 返回 width:100%,尽管我希望“Test”这个词简单地居中。有什么想法吗? 最佳答案 您的问题与 HT
我是一名优秀的程序员,十分优秀!