Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
linux汇编:如何调用系统调用?
我想在汇编中调用系统调用 问题是我不能mov ecx rsp rsp是64位寄存器 ecx是一个32位寄存器 我想将缓冲区地址作为此系统调用的参数传递 我能做些什么 谢谢 section data s0 db Largest basic f
Linux
Assembly
x8664
systemcalls
如果在 64 位代码中使用 32 位 int 0x80 Linux ABI 会发生什么?
int 0x80在 Linux 上总是调用 32 位 ABI 无论从什么模式调用 args inebx ecx 以及来自的系统调用号 usr include asm unistd 32 h 或者在没有编译的 64 位内核上崩溃CONFIG
Linux
Assembly
x8664
systemcalls
ABI
“条件调用”在 amd64 上的性能
当考虑代码关键部分中的条件函数调用时 我发现 gcc 和 clang 都会围绕该调用进行分支 例如 对于以下 诚然微不足道的 代码 int32 t attribute noinline negate int32 t num return n
Assembly
x86
x8664
branchprediction
GCC 不使用 inc
海湾合作委员会编译器 gcc version gcc GCC 4 8 2 不生成inc汇编指令 它实际上可能有用 例如在这个 C 程序中 int main int argc char argv int sum 0 int i for i 0
Optimization
gcc
Assembly
x8664
gcc48
64 位 Windows 中的汇编系统调用
我使用的是 Windows 10 安装了 Cygwin 我一直使用 Cygwin 来使用 Cygwin 安装的 gcc 和 nasm 来编译 汇编 c 和汇编程序 据我所知 nasm有一个 f win64模式 因此它可以汇编64位程序 现在
Windows
Assembly
x8664
systemcalls
interrupt
如何指示 MSVC 编译器使用 64 位/32 位除法而不是较慢的 128 位/64 位除法?
如何告诉 MSVC 编译器使用 64 位 32 位除法运算来计算 x86 64 目标的以下函数的结果 include
c
visualc
x8664
compileroptimization
integerdivision
x86-64 REX 前缀中的“REX”代表什么?
From 英特尔的SDM 第 2 2 1 节指定 REX 前缀用于 指定 GPR 和 SSE 寄存器 指定 64 位操作数大小 指定扩展控制寄存器 但缩写词中的字母 REX 代表什么 这个2002年热门薯条演示AMD 扩展了幻灯片 10 上
Assembly
x86
x8664
intel
machinecode
这个 128 位整数乘法在汇编 (x86-64) 中如何工作?
我正在阅读计算机系统 程序员的视角作业是描述这个算法是如何工作的 C函数 void store prod int128 dest int64 t x int64 t y dest x int128 y 集会 movq rdx rax cqt
c
Assembly
x8664
128bit
向量化模运算
我正在尝试编写一些相当快速的分量向量加法代码 我正在使用 我相信是有符号的 64 位整数 函数是 void addRq int64 t a const int64 t b const int32 t dim const int64 t q
c
Assembly
x8664
SSE
intrinsics
如何在 OS X 10.6 上构建 64 位 Python —— 只有 64 位,没有通用的废话
我只是想在我的开发机器上构建这个 来自 Python org 的二进制安装仍然是 32 位 安装扩展 例如 MySQLdb 让我发疯 试图找出每个扩展的正确标志 澄清 我没有替换系统 Python 我只是将 Python org 二进制文件
python
MacOS
64bit
osxsnowleopard
x8664
sin 和 cos 的向量化
我正在玩编译器资源管理器并遇到了异常 我认为 如果我想让编译器向量化一个sin计算 using libmvec 我会写 include
c
gcc
vectorization
x8664
trigonometry
C++ 当从函数返回结构体时,汇编中实际发生了什么?
我试图弄清楚如果从函数中按值返回结构 而不是返回指向该结构的指针 那么在 C 中实际会发生什么 如果函数只能返回适合寄存器的值 那么当按值发送结构时 如何进行通信 我在某处读到过 我尝试在 Godbolt 上测试它 看看它在做什么 但我不了
c
Assembly
x8664
callingconvention
ABI
从 x64 .NET 访问 x86 COM
我有一个 x64 服务器 因为我的库被编译为 AnyCPU 所以它在 x64 下运行 我们需要访问在 x86 下注册的 COM 组件 我对 COM 的了解还不够 我的谷歌搜索也没有任何结果 问题 对于 COM 组件 我可以使用从 x64 回
NET
com
x8664
Interop
32bit64bit
FLD指令x64位
我在 x64 位中使用 FLD 指令时遇到一些问题 想将Double值加载到st0寄存器中的堆栈指针FPU 但这似乎是不可能的 在 Delphi x32 中 我可以使用以下代码 function DoSomething X Double D
Delphi
Assembly
x8664
FPU
basm
编写 std::copysign 的可移植 SSE/AVX 版本
我目前正在使用 SSE 和 AVX 内在函数编写 QR 分解 线性系统求解器 的矢量化版本 其中一个子步骤需要选择与另一个值相反 等于的值的符号 在串行版本中 我为此使用了 std copysign 现在我想为 SSE AVX 寄存器创建一
c
x8664
SSE
SIMD
avx
用汇编程序编写 x86_64 Linux 内核模块
我尝试在 nasm 中编写简单的内核模块 v3 6 但 insmod 告诉我 sudo insmod hello ko insmod ERROR could not insert module hello ko Invalid module
Assembly
Linuxkernel
x8664
kernelmodule
x86_64 寄存器 rax/eax/ax/al 覆盖完整寄存器内容[重复]
这个问题在这里已经有答案了 正如广泛宣传的那样 现代 x86 64 处理器具有 64 位寄存器 可以以向后兼容的方式用作 32 位寄存器 16 位寄存器甚至 8 位寄存器 例如 0x1122334455667788 rax 64 bits
Assembly
x8664
cpuregisters
zeroextension
C++ 64位int:按引用传递或按值传递
这是一个关于 64 位整数的效率问题 假设我不需要修改 int 参数的值 我应该通过值还是引用传递它 假设32位机器 1 32位整数 Iguess答案是 按值传递 因为 按引用传递 将产生额外的内存查找开销 2 64位int 如果我通过引用
c
performance
passbyreference
32bit64bit
x8664
在 GCC 中动态创建 va_list - 可以做到吗?
我的问题是vsprintf是我无法直接获取输入参数 我必须先逐一获取输入并将它们保存在void 然后通过这个void to vsprintf 对于windows来说一切都很好 但是当我来到64位linux时 gcc无法编译 因为它不允许从v
c
gcc
x8664
variadicfunctions
安装和更新 Perl 模块为“通用”(x86_64、arm64)?
是否可以安装和更新具有通用 x86 64 arm64 架构支持的 Perl CPAN 模块 如果是 那么如何 背景 在基于arm的macOS计算机上 可以为一个指定的架构安装Perl CPAN模块 如下所示 sudo cpan i Enco
MacOS
perl
x8664
cpan
applesilicon
«
1 ...
14
15
16
17
18
19
20
»