标签: abi

为什么我需要在linux内核升级后重新编译vmware内核模块?

在Linux内核升级之后,我的VMWare服务器无法启动,直到使用vmware-config.pl进行一些重新配置工作(包括构建一些内核模块).

如果我用最新的Windows Service Pack更新我的Windows VMWare主机,我通常不需要做任何事情来运行VMWare.

为什么VMWare在Linux和Windows之间的工作方式不同?这种重新编译操作是否会通过Windows在Linux平台上带来任何好处?

linux vmware kernel module abi

5
推荐指数
1
解决办法
6463
查看次数

i386与AMD64 ABI的差异

在哪里可以找到i386和AMD64应用程序二进制接口(ABI)之间数据类型的所有差异?

我知道long类型在i386 ABI中是32位,在AMD64中是64位.它是否正确?

x86 x86-64 abi i386

5
推荐指数
2
解决办法
2865
查看次数

如何使MS Visual C++使用LP64而不是LLP64

我想知道是否可以使用VC++ LP64而不是LLP64,我知道我可以使用其他编译器,如GCC或Intel C++,但我想出于各种原因使用VC++.

不需要与Microsoft标头等兼容,我已经使用LIBC作为我的运行时库.

64-bit abi visual-studio-2010 visual-c++

5
推荐指数
1
解决办法
1062
查看次数

必须重新编译什么才能运行x32 ABI应用程序?

我可以使用新的x32 ABI编译应用程序,然后在普通内核中运行它吗?那么运行时C库呢?与预编译的x86 / x86_64库是否存在任何形式的互操作性?

linux abi 32bit-64bit linux-x32-abi

5
推荐指数
1
解决办法
471
查看次数

ABI与C++标准

我试图理解ABI(比如System V)和C++ Standard的不同之处.因此,C++标准只是确定合法的C++,以便编译器可以将其转换为适当的汇编代码.然后ABI规定此汇编代码如何与x86架构交互?是两者之间的较高级别比较吗?

我问的理由是对低延迟软件感兴趣我想知道阅读ABI会包含多少价值?

c++ cpu x86 assembly abi

5
推荐指数
2
解决办法
406
查看次数

ARM上TLS的代码序列

ELF处理线程局部存储文件给出了各种模型装配顺序(本地的exec /初始EXEC /一般动态)的各种架构.但不是ARM - 我能在哪里看到ARM的代码序列吗?我正在编写一个编译器,并希望生成能够与平台链接器(程序和动态)一起正常运行的代码.

为清楚起见,我们假设一个ARMv7 CPU和一个非常新的内核和glibc(比如说3.13+/2.19+),但是如果这很容易解释,我也会对旧的hw/sw需要改变什么感兴趣.

linux arm elf abi thread-local-storage

5
推荐指数
1
解决办法
1850
查看次数

ABI-视觉工作室c库的兼容性

我的理解是(除了从VS2015切换到VS2017的明显例外),Microsoft使ABI在每个版本的Visual C++工具链之间进行了重大更改.因此,如果我想分发库的二进制版本,我必须为我想要支持的每个新版本的VS分发一个单独的版本.

现在我的问题是:

  • 纯c-library也是如此吗?
  • dll和静态库的答案有何不同?
  • MS是否有关于未来目标的官方政策?

(特别是考虑到crt重构和稳定性)

如果这是相关的,我会满足于特定于Win10的答案,但我也对所有Windows版本感兴趣,因为(包括)Win7.我感兴趣的VS Studio的版本是VS2013/15/17,并且 - 就任何预测而言 - 将来的版本.

c abi visual-studio universal-crt

5
推荐指数
1
解决办法
375
查看次数

未捕获的错误:返回的值无效,是否用完了?

我正在听我已部署合同的事件。每当事务完成并触发事件时,收到响应都会导致以下错误:

未捕获的错误:返回的值无效,是否用完了?位于ABICoder.push ../ node_modules / web3-eth-abi / src / index.js.ABICoder.push ../ node_modules / web3-eth-abi / src / index处的ABICoder.decodeParameters(index.js:227)。 js.ABICoder.decodeLog(index.js:277)

Web3版本:1.0.0-beta36

Metamask版本:4.16.0

如何解决?

events abi ethereum solidity web3-donotuse

5
推荐指数
3
解决办法
4424
查看次数

为什么-mmacosx-version-min = 10.10不能阻止使用标记为10.11开头的函数?

通过我对可用性宏和-mmacosx-version-min标志如何工作的理解,在针对OS X 10.10时,以下代码应该无法编译:

#include <Availability.h>
#include <CoreFoundation/CoreFoundation.h>
#include <Security/Security.h>

#if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
#error
#endif

#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101000
#error __MAC_OSX_VERSION_MIN_REQUIRED too low
#endif

#if __MAC_OS_X_VERSION_MIN_REQUIRED > 101000
#error __MAC_OSX_VERSION_MIN_REQUIRED too high
#endif

int main() {

    size_t len = 0;

    SSLContextRef x{};
    auto status = SSLCopyRequestedPeerNameLength(x, &len);
    return status != 0;
}
Run Code Online (Sandbox Code Playgroud)

因为该功能SSLCopyRequestedPeerNameLength在10.11中标记为可用SecureTransport.h:

$ grep -C5 ^SSLCopyRequestedPeerNameLength /System/Library/Frameworks//Security.framework/Headers/SecureTransport.h

/*
 * Server Only: obtain the hostname specified by the client in the ServerName extension (SNI)
 */
OSStatus …
Run Code Online (Sandbox Code Playgroud)

c++ macos xcode abi clang

5
推荐指数
1
解决办法
302
查看次数

为什么std :: pair &lt;long,long&gt;和std :: tuple &lt;long,long&gt;生成不同的代码

我期望std :: pair和std :: tuple具有类似的行为。但事实证明,与std :: pair相比,std :: tuple生成更差的asm代码。

https://gcc.godbolt.org/z/Ri4M8z-gcc 10.0.0每晚构建,-O3 -std=c++17
针对x86-64 System V ABI进行编译

#include <utility>

std::pair<long, long> test_pair() {
    return { 1, 2 };
}
Run Code Online (Sandbox Code Playgroud)
# returned in RDX:RAX
test_pair():
        mov     eax, 1
        mov     edx, 2
        ret
Run Code Online (Sandbox Code Playgroud)
#include <tuple>
std::tuple<long, long> test_tuple() {
    return { 1, 2 };
}
Run Code Online (Sandbox Code Playgroud)
# returned via hidden pointer, not packed into registers
test_tuple():
        mov     QWORD PTR [rdi], 2
        mov     QWORD PTR [rdi+8], 1
        mov     rax, rdi
        ret
Run Code Online (Sandbox Code Playgroud)

这两个函数都返回两个值。test_pair使用寄存器存储期望值;但是test_tuple将值存储在堆栈中,这似乎是未优化的。为什么这两个函数的行为不同?

c++ assembly x86-64 abi

5
推荐指数
0
解决办法
67
查看次数