abi相关内容

如何用元组(嵌套ABI)做函数签名?

struct Test { uint ui; string s; } function test(Test t) public { emit Log(t.ui, t.s); } 我对ABI有一些了解。我与试验性的ABIEncoderV2选项签订了这份合同。总之,这个函数的签名是0x6056f4cc,我在操作码中找到了这个值。我尝试了一些用例测试(uint256,字符串)、测试(元组 ..
发布时间:2022-04-10 11:00:47 其他开发

ELF文件格式中的section和segment有什么区别

来自维基可执行和可链接格式: 段包含文件运行时执行所需的信息,而节包含用于链接和重定位的重要数据.整个文件中的任何字节最多只能被一个节拥有,并且可以有不属于任何节的孤儿字节. 但是section和segment有什么区别呢?在一个可执行的 ELF 文件中,一个段是否包含一个或多个节? 解决方案 但是section和segment有什么区别呢? 正是您引用的内容:段包含 ..
发布时间:2022-01-24 22:38:54 服务器开发

g++ 总是向后兼容“older";静态库?

我有一些静态库,但我不是其所有者,它们是用旧版本的 g++ 4.3.2 编译的(c++11/c++0x 未激活). 当我使用 g++ 4.6(没有 c++11)编译我的代码并使用 g++ 4.6 将其与这些链接时静态库,它链接很好,我似乎在运行时没有遇到任何问题(虽然没有测试一切).我倾向于认为前向兼容性是可以的. 现在我想用 gcc 4.8 和 c++11 编译我的代码,并且仍然将它 ..
发布时间:2022-01-23 20:30:42 C/C++开发

在 bool 中设置额外的位使其同时为真和假

如果我得到一个 bool 变量并将其第二位设置为 1,则变量同时计算为真和假.使用带有 -g 选项的 gcc6.3 编译以下代码,(gcc-v6.3.0/Linux/RHEL6.0-2016-x86_64/bin/g++ -g main.cpp -omytest_d) 并运行可执行文件.你会得到以下结果. T怎么可能同时等于真假? 值位----- ----电话:1 0001位变化后电话: ..
发布时间:2022-01-19 17:10:33 C/C++开发

ARM 到 C 调用约定,NEON 寄存器保存

有一个类似的帖子涵盖了常规寄存器.NEON 寄存器呢?据我记得,寄存器的上半部分或下半部分必须在函数调用中保留.我在任何地方都找不到该信息,有人可以澄清一下吗? 谢谢 来自 AAPCS,§5.1.1 核心寄存器: r0-r3 是参数和暂存寄存器;r0-r1也是结果寄存器 r4-r8 是被调用者保存寄存器 r9 可能是被调用者保存寄存器,也可能不是(在 AAPCS 的某些变体中 ..
发布时间:2022-01-17 13:59:13 其他开发

Android Studio:缺少剥离工具

我在使用终端命令 gradle clean assembleRelease 构建我的 android studio 代码时不断收到此警告: 由于缺少 ABI 'ARMEABI' 的剥离工具,无法剥离库 'lib.so'.按原样打包. 请帮助我解决此警告. 注意:我知道这不会影响我的应用程序的行为,但是我的 APK 太庞大了,这肯定会帮助我减小 APK 的大小.所以我需要解决这个问 ..
发布时间:2022-01-17 13:57:39 移动开发

ARM ABI 和 EABI 的用途是什么?

我越看这个 PDF (应用程序二进制接口ARM 架构:基本标准)我越不理解它的含义.我还想对 ARM 架构的过程调用标准 和 用于 ARM 架构的 ELF. 解决方案 ABI(Application Binary Interface)是定义低级概念之间映射的标准高级语言和特定硬件/操作系统平台机器代码的能力.这包括: C/C++/Fortran/...数据类型在内存中的布局方式(数据 ..
发布时间:2022-01-17 13:56:59 其他开发

什么是应用程序二进制接口 (ABI)?

我从来没有清楚地理解 ABI 是什么.请不要将我指向维基百科的文章.如果我能理解,我就不会在这里发这么长的帖子了. 这是我对不同界面的看法: 电视遥控器是用户与电视之间的接口.它是一个现有的实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现. 接口:它是一个“现有实体"层.该功能的 functionality 和 consumer.一个接口本身不做任何 ..
发布时间:2022-01-16 23:56:47 其他开发

链接 C++17、C++14 和 C++11 对象是否安全

假设我有三个编译对象,全部由相同的编译器/版本生成: A 是使用 C++11 标准编译的 B 使用 C++14 标准编译 C 是使用 C++17 标准编译的 为简单起见,我们假设所有标头都是用 C++11 编写的,仅使用语义在所有三个标准版本之间都没有改变的结构,因此任何相互依赖都可以通过标头包含正确表达并且编译器没有反对. 这些对象的哪些组合是,链接到单个二进制文件是否安全 ..
发布时间:2022-01-11 14:49:10 C/C++开发

armeabi 和 armeabi-v7a 的区别

据我所知,Android NDK 中两种支持的 ARM 架构风格之间的区别仅在于支持的 CPU 指令集.真的是这样吗?调用约定、系统调用顺序或其他方面没有区别吗? 我想知道如果我将模块编译为 ARM 目标文件(使用 NDK 以外的编译器 - 特别是 Free Pascal),将 ARMv6 指定为架构,然后将其链接到 armeabi 和 armeabi-v7a 会发生什么共享库.FPC 位不 ..
发布时间:2022-01-10 23:58:45 移动开发

i386 与 AMD64 ABI 差异

在哪里可以找到 i386 和 i386 之间数据类型的所有差异?AMD64 应用程序二进制接口 (ABI) ? 我知道在 i386 ABI & 中 long 类型是 32 位的64 位 AMD64.这是正确的吗? 解决方案 我建议你下载 Dr Agner Fog 的优化手册.他有一本专门介绍 ABI 及其差异的手册. 对于 32 位模式和 64 位模式之间指令集的差异,Inte ..
发布时间:2022-01-06 13:06:54 其他开发

glibc: elf 文件 OS ABI 无效

下载并编译 glibc-2.13.当我尝试运行一个执行 malloc() 的示例 C 程序时.我收到以下错误elf 文件 OS ABI 无效 任何人都可以通过我的任何有助于解决此问题的指针.请注意我的内核版本是 linux-2.6.35.9 解决方案 问题不是你的内核版本. 您系统上的加载程序不支持新的 Linux ABI.直到最近,Linux ELF 二进制文件才使用 Sys ..
发布时间:2022-01-04 22:15:51 服务器开发

在 C 中按值传递结构而不是传递指针有什么缺点吗?

在 C 中按值传递结构而不是传递指针有什么缺点吗? 如果结构体很大,显然有复制大量数据的性能方面,但对于较小的结构体,它应该与向函数传递多个值基本相同. 当用作返回值时可能更有趣.C 只有一个函数的返回值,但你经常需要几个.因此,一个简单的解决方案是将它们放入一个结构体中并返回. 是否有任何支持或反对的理由? 因为大家可能不太明白我在这里说的是什么,所以我举一个简单的例子. ..
发布时间:2021-12-23 16:57:49 其他开发

如何避免二进制文件中的 STT_GNU_IFUNC 符号?

我需要部署到 Red Hat 4.1.2 机器(有 gcc 4.1.2).我在 Ubuntu 11.10 上使用 GCC 4.6.1 进行开发.不幸的是,我的构建过程创建的一些二进制文件在 RedHat 机器上无法使用.原因似乎是 ABI 更改,根据 另一个 Stackoverflow 问题 源于 STT_GNU_IFUNC 符号的引入.有没有办法防止导出任何此类符号,以便我的二进制文件可以使用旧 ..
发布时间:2021-12-18 23:17:59 服务器开发

由于符号与 abi::cxx11 的链接问题?

我们最近发现了一个报告,因为 GCC 5.1、libstdc++ 和 Dual ABI.似乎 Clang 不知道 GCC 内联命名空间的变化,所以它生成代码基于一组命名空间或符号,而 GCC 使用另一组命名空间或符号.在链接时,由于缺少符号而出现问题. 如果我正确解析了 双 ABI 页面,它看起来就像以 _GLIBCXX_USE_CXX11_ABI 和 abi::cxx11 为中心的问题,还 ..
发布时间:2021-12-18 23:15:57 服务器开发

GCC ABI 兼容性

据我所知,无法链接使用不同版本的 GCC 应用程序二进制接口 (ABI) 的库.GCC 的每个版本都有 ABI 更改吗?如果我使用 GCC 4.3.2,是否可以链接使用 4.3.1 构建的库?是否有某种矩阵列出了我可以组合 GCC 版本的所有方式? 解决方案 官方ABI 页面指向一个ABIcheck.这个工具可以做,你想要什么. ..
发布时间:2021-12-18 22:52:44 C/C++开发

为什么可以在寄存器中传递 T*,而 unique_ptr<T>不能?

我正在 CppCon 2019 上观看 Chandler Carruth 的演讲: 没有零成本抽象 在其中,他举例说明了使用 std::unique_ptr 而不是 int* 会产生多少开销让他感到惊讶;该片段大约在时间点 17:25 开始. 您可以查看他的示例对片段 (godbolt.org) - 确实,编译器似乎不愿意传递 unique_ptr 值 - 实际上在底线 ..
发布时间:2021-12-18 09:37:10 C/C++开发

程序启动时的默认寄存器状态是什么(asm、linux)?

当程序启动时 (linux, elf) - eax、ebx 等中是否有零或可以有任何东西(我没有做任何调用或使用外部库)?在我的机器上确实如此,我可以在编写 asm 程序时中继这种行为吗? 解决方案 这完全取决于每个平台的 ABI.既然你提到了 eax 和 ebx 让我们看看 x86 的情况.在 fs/binfmt_elf.c 行 #972 中,在 load_elf_binary() 中, ..
发布时间:2021-12-18 09:29:09 服务器开发