标签: x86-64

在x86中增量是一个整数原子?

在多核x86机器上,假设在core1上执行的线程增加一个整数变量a,同时核心2上的线程也增加它.鉴于初始值为a0,它是否总是2在最后?或者它可能有其他价值?假设a声明为volatile并且我们没有使用原子变量(例如C++的atomic <>和gcc中的原子操作).

如果a在这种情况下,值确实总是2,那是否意味着long intx86-64 中的a 也具有相同的属性,即a最终总是2?

c c++ x86 gcc x86-64

17
推荐指数
4
解决办法
2万
查看次数

在debian wheezy amd64上安装ia32-libs

我正在使用Debian 7(wheezy)amd64.

uname -a
Linux tzwm-debian 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我想ia32-libs在我的Debian中安装.但是当我尝试安装时会发生这种情况.

sudo apt-get install ia32-libs 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The …
Run Code Online (Sandbox Code Playgroud)

linux debian x86-64

17
推荐指数
2
解决办法
6万
查看次数

如何跨架构使用 python-poetry?

我的主要开发机器是(Raspberry Pi) x86_64,而我的一些部署环境是arm7vl(Raspberry Pi)。对于大多数 Python 开发来说,这不是问题,但某些 Python 库仅在PyPI forx86_64piwheels for aarmv7l. 这导致使用诗歌遇到一些困难。作为一个简单的示例,这是在计算机pyproject.toml上创建的文件x86_64

[tool.poetry]
name = "poetrytest"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.9"
opencv-python = "^4.5.5"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud)

相应的poetry.lock文件包含从 PyPI 中提取的文件的哈希值,当您运行时,poetry install一切都会按预期工作。 但是,如果将这两个文件复制到 Raspberry Pi,安装将无法找到合适的.whl文件,因此会退回到尝试从源代码构建,这大约需要 2 小时并且失败:-(

要使其在 Pi 上工作,您需要将此块添加到pyproject.toml

[[tool.poetry.source]]
name = "piwheels"
url …
Run Code Online (Sandbox Code Playgroud)

python x86-64 armv7 raspberry-pi python-poetry

17
推荐指数
1
解决办法
3126
查看次数

什么是_GLOBAL_OFFSET_TABLE?

在Linux中使用nm命令查看程序中的符号,我看到一个符号,_GLOBAL_OFFSET_TABLE_如下所示.有人可以详细说明_GLOBAL_OFFSET_TABLE_用途吗?

0000000000614018 d _GLOBAL_OFFSET_TABLE_
Run Code Online (Sandbox Code Playgroud)

c linux gcc x86-64

16
推荐指数
1
解决办法
7252
查看次数

gfortran for dummies:mcmodel = medium做了什么?

我有一些代码在编译时给我重定位错误,下面是一个说明问题的示例:

  program main
  common/baz/a,b,c
  real a,b,c
  b = 0.0
  call foo()
  print*, b
  end

  subroutine foo()
  common/baz/a,b,c
  real a,b,c

  integer, parameter :: nx = 450
  integer, parameter :: ny = 144
  integer, parameter :: nz = 144
  integer, parameter :: nf = 23*3
  real :: bar(nf,nx*ny*nz)

  !real, allocatable,dimension(:,:) :: bar
  !allocate(bar(nf,nx*ny*nz))

  bar = 1.0
  b = bar(12,32*138*42)

  return
  end
Run Code Online (Sandbox Code Playgroud)

编译这个gfortran -O3 -g -o test test.f,我得到以下错误:

relocation truncated to fit: R_X86_64_PC32 against symbol `baz_' defined in COMMON section in …
Run Code Online (Sandbox Code Playgroud)

fortran memory-management x86-64 gfortran

16
推荐指数
2
解决办法
2万
查看次数

如何在x86中编码相对较短的jmp

假设我想使用以下操作码进行短跳转:

EB CBJMP rel8

"跳转,RIP = RIP + 8位位移符号扩展到64位"

(其中CB是一个字节有符号值,表示与EIP寄存器中的方向有关的相对偏移量)

也许总是偏移量将偏移+ 2,因为此短跳转中的执行时间(参考方向)中的EIP是twobyte指令的基础,但加数始终发生

eb 30 = jmp 0x00000032(+30)

eb e2 = jmp 0xffffffe4(-30)

那么EIP可以是故意相同的方向,因为fe + 2是00EIP.

eb fe = jmp 0x00000000

我发现令人惊讶的是,虽然数字是负数,但是过度偏移也会出现分叉.但在英特尔,我发现没有提及(可能因为3000页).

英特尔®64和IA-32架构软件开发人员手册:Vol.2A 3-423

近跳跃,其中跳跃范围从当前 EIP值限制为-128到+127 .

然后我考虑了三种可能性:

  1. 是+2因为是执行时EIP 的后/后值
  2. 编码值不是2s分量编码的有符号数.
  3. 这出现在手册中,但我没有看到,因为我很愚蠢

x86 assembly x86-64

16
推荐指数
3
解决办法
3万
查看次数

什么是最快的x86-64汇编语言划分算法的庞大数字?

我在X86-64汇编语言编写的代码库提供所有传统的按位,移位,逻辑,比较,运算和数学函数s0128,s0256,s0512,s1024签署整数类型和f0128,f0256,f0512,f1024浮点类型.到目前为止,我正在处理有符号整数类型,因为浮点函数可能会调用为整数类型编写的一些内部例程.

到目前为止,我已经编写并测试了函数来执行各种一元运算符,比较运算符以及加,减和乘法运算符.

现在我正在尝试决定如何为除法运算符实现函数.

我的第一个想法是,"Newton-Raphson必须是最好的方法".为什么?因为它给出了一个很好的种子(开始猜测)它很快收敛,我想我应该能够弄清楚如何在操作数上执行本机64位除法指令以获得一个很好的种子值.实际上,如果种子值精确到64位,要获得正确的答案应该只采取:

`s0128` : 1~2 iterations : (or 1 iteration  plus 1~2 "test subtracts")
`s0256` : 2~3 iterations : (or 2 iterations plus 1~2 "test subtracts")
`s0512` : 3~4 iterations : (or 3 iterations plus 1~2 "test subtracts")
`s1024` : 4~5 iterations : (or 4 iterations plus 1~2 "test subtracts")
Run Code Online (Sandbox Code Playgroud)

然而,更多地思考这个问题让我很奇怪.例如,我记得我编写的核心例程,它对所有大整数类型执行乘法运算:

s0128 :   4 iterations ==   4 (128-bit = 64-bit * 64-bit) …
Run Code Online (Sandbox Code Playgroud)

algorithm assembly x86-64 mathematical-optimization divide

16
推荐指数
1
解决办法
2417
查看次数

x86_64,i386,ia64和其他类似的术语代表什么?

我经常遇到这些术语,并对它们感到困惑.它们是特定于处理器,操作系统还是两者兼有?

我在英特尔i7机器上运行Ubuntu 12.04.那么他们中的哪一个会申请我的案子呢?

x86-64 processor itanium instruction-set computer-architecture

16
推荐指数
2
解决办法
2万
查看次数

将32位偏移量添加到x86-64 ABI的指针时是否需要符号或零扩展?

简介:我正在查看汇编代码来指导我的优化,并在将int32添加到指针时看到许多符号或零扩展.

void Test(int *out, int offset)
{
    out[offset] = 1;
}
-------------------------------------
movslq  %esi, %rsi
movl    $1, (%rdi,%rsi,4)
ret
Run Code Online (Sandbox Code Playgroud)

起初,我认为我的编译器在添加32位到64位整数时遇到了挑战,但我已经用Intel ICC 11,ICC 14和GCC 5.3证实了这种行为.

这个帖子证实了我的发现,但不清楚是否需要符号或零扩展.仅当尚未设置高32位时,才需要此符号/零扩展.但x86-64 ABI难道不够聪明吗?

我有点不愿意将所有指针偏移更改为ssize_t,因为寄存器溢出会增加代码的缓存占用空间.

assembly x86-64 abi compiler-optimization sign-extension

16
推荐指数
1
解决办法
2591
查看次数

Xcode 8警告:没有规则来处理体系结构x86_64的net.daringfireball.markdown类型的文件

我在Xcode 8中获得了上面的cocoapod源代码中的CHANGELOG.md文件警告.我该如何清除它?

markdown xcode x86-64 compiler-warnings cocoapods

16
推荐指数
1
解决办法
4656
查看次数