草庐IT

itanium-abi

全部标签

c++ - 如果他们定义了标准 ABI,C/C++ "lose"会是什么?

标题说明了一切。我说的是C/C++,因为两者都认为这是“实现问题”。我认为,定义一个标准接口(interface)可以轻松地在其上构建模块系统,以及许多其他好处。如果定义标准ABI,C/C++会“失去”什么? 最佳答案 在每个处理器上以最自然的方式实现事物的自由。我认为c特别是在比任何其他语言更多不同的架构上具有一致的实现。遵守针对当前常见的高端通用CPU优化的ABI将需要在一些奇怪的机器上进行不自然的扭曲。 关于c++-如果他们定义了标准ABI,C/C++"lose"会是什么?,我们在

c++ - 如果他们定义了标准 ABI,C/C++ "lose"会是什么?

标题说明了一切。我说的是C/C++,因为两者都认为这是“实现问题”。我认为,定义一个标准接口(interface)可以轻松地在其上构建模块系统,以及许多其他好处。如果定义标准ABI,C/C++会“失去”什么? 最佳答案 在每个处理器上以最自然的方式实现事物的自由。我认为c特别是在比任何其他语言更多不同的架构上具有一致的实现。遵守针对当前常见的高端通用CPU优化的ABI将需要在一些奇怪的机器上进行不自然的扭曲。 关于c++-如果他们定义了标准ABI,C/C++"lose"会是什么?,我们在

C++ ABI 问题列表

我看到很多关于C++没有标准ABI的讨论,就像C一样。我很好奇究竟是什么问题。到目前为止,我想出了名称修改异常处理RTTI还有其他与C++相关的ABI问题吗? 最佳答案 在我的头顶:C++特定:在哪里可以找到“this”参数。如何调用虚函数即它是否使用vtable或其他用于实现这一点的结构的布局是什么。如何处理多个定义多个模板实例化未内联的内联函数。静态存储持续时间对象如何处理创建(在全局范围内)如何处理本地函数的创建(如何将其添加到析构函数列表中)如何处理销毁(按创建的相反顺序销毁)您提到了异常(exception)情况。还有如何

C++ ABI 问题列表

我看到很多关于C++没有标准ABI的讨论,就像C一样。我很好奇究竟是什么问题。到目前为止,我想出了名称修改异常处理RTTI还有其他与C++相关的ABI问题吗? 最佳答案 在我的头顶:C++特定:在哪里可以找到“this”参数。如何调用虚函数即它是否使用vtable或其他用于实现这一点的结构的布局是什么。如何处理多个定义多个模板实例化未内联的内联函数。静态存储持续时间对象如何处理创建(在全局范围内)如何处理本地函数的创建(如何将其添加到析构函数列表中)如何处理销毁(按创建的相反顺序销毁)您提到了异常(exception)情况。还有如何

c++ - 如何在我的 dll 接口(interface)或 ABI 中使用标准库 (STL) 类?

在导出包含与VisualStudio警告C4251相关的STL类的类之前,有几个问题:例如这个问题或这个问题。我已经阅读了UnknownRoad上的精彩解释。盲目地禁用警告似乎有点危险,尽管它可能是一种选择。包装所有这些std类并导出它们也不是一个真正的选择。毕竟它被称为标准模板库...即,想要为这些标准类提供一个接口(interface)。如何在我的dll接口(interface)中使用STL类?有哪些常见做法? 最佳答案 在进一步阅读之前请记住一件事:我的回答来自编写可移植代码的角度,这些代码可用于由在不同编译器下编译的模块组成

c++ - 如何在我的 dll 接口(interface)或 ABI 中使用标准库 (STL) 类?

在导出包含与VisualStudio警告C4251相关的STL类的类之前,有几个问题:例如这个问题或这个问题。我已经阅读了UnknownRoad上的精彩解释。盲目地禁用警告似乎有点危险,尽管它可能是一种选择。包装所有这些std类并导出它们也不是一个真正的选择。毕竟它被称为标准模板库...即,想要为这些标准类提供一个接口(interface)。如何在我的dll接口(interface)中使用STL类?有哪些常见做法? 最佳答案 在进一步阅读之前请记住一件事:我的回答来自编写可移植代码的角度,这些代码可用于由在不同编译器下编译的模块组成

linux - 为什么在x86_64 ABI中选择地址0x400000作为文本段的开头?

在p的this文件中。27它说文本段开始于0x400000。为什么选择这个特定地址?有没有原因是什么?在GNUld的Linux中选择了相同的地址:$ld-verbose|grep-itext-segmentPROVIDE(__executable_start=SEGMENT_START("text-segment",0x400000));.=SEGMENT_START("text-segment",0x400000)+SIZEOF_HEADERS;令人惊讶的是,此地址在32位x86可执行文件中更大:$ld-verbose|grep-itext-segmentPROVIDE(__exec

linux - 为什么在x86_64 ABI中选择地址0x400000作为文本段的开头?

在p的this文件中。27它说文本段开始于0x400000。为什么选择这个特定地址?有没有原因是什么?在GNUld的Linux中选择了相同的地址:$ld-verbose|grep-itext-segmentPROVIDE(__executable_start=SEGMENT_START("text-segment",0x400000));.=SEGMENT_START("text-segment",0x400000)+SIZEOF_HEADERS;令人惊讶的是,此地址在32位x86可执行文件中更大:$ld-verbose|grep-itext-segmentPROVIDE(__exec

第119篇 solidity 中的 ABI

 ABI全称ApplicationBinaryInterface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易,调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是ABI的编码数据。1.函数选择器一个函数调用数据的前4字节,指定了要调用的函数。这就是某个函数签名的Keccak哈希的前4字节(高位在左的大端序)(译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括

第119篇 solidity 中的 ABI

 ABI全称ApplicationBinaryInterface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易,调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是ABI的编码数据。1.函数选择器一个函数调用数据的前4字节,指定了要调用的函数。这就是某个函数签名的Keccak哈希的前4字节(高位在左的大端序)(译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括