Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
为什么不将函数参数存储在 XMM 向量寄存器中?
我目前正在阅读一本书 计算机系统 程序员的视角 我发现 在 x86 64 架构上 我们仅限于 6 个整数参数 这些参数将传递给寄存器中的函数 接下来的参数将在堆栈上传递 此外 前最多 8 个 FP 或向量参数在 xmm0 7 中传递 为什么
Assembly
x86
parameterpassing
x8664
callingconvention
RET后的指令一定是CALL后的指令吗?
在行为良好的 C 程序中 返回语句 RET 是否始终返回到 CALL 语句后面的指令 我知道这是默认设置 但我想检查是否有人知道或记得不适用此标准的真实示例 常见编译器优化或其他事情 有人告诉我 函数指针可能会发生这种情况 函数指针会将值放
c
x86
Return
Call
functionpointers
如何查看已初始化数组与未初始化数组占用的内存
我目前正在按照 Kip Irvine 的 x86 处理器的汇编语言 学习汇编编程 在第 3 4 12 节中 作者指出 The DATA 指令声明未初始化的数据 当定义一个 大块未初始化的数据 DATA 指令减少了 已编译程序的大小 例如 下
Arrays
Assembly
x86
MASM
irvine32
SCI - 系统控制中断向量是如何定义的?
根据 ACPI 规范 FADT 固定 ACPI 描述表 表包含一个字段 用于报告SCI中断操作系统的编号 该字段定义如下 我在 Intel x86 平台上转储了 FADT 表 看到 SCI 中断与编号相关联9 但根据英特尔手册 0 31是
x86
interrupt
interrupthandling
在 c 可执行文件中运行数据 shellcode
我正在研究这个c 程序 我在 64 位 x64 linux 上用 gcc 编译它 include
Assembly
memorymanagement
x86
reverseengineering
i3 或 i7 处理器中的 clflush()
是否可以在 i3 i7 处理器中使用 clflush 指令 函数来刷新缓存并检查缓存是否为空 如果是这样 请建议正确的使用格式 直接在 C 中或在 C 中内联汇编 有人告诉我 clflush 确实可以在 core 2 双核处理器之外正常工作
caching
Assembly
x86
如何在 x86 汇编中移动两个浮点相乘的结果?
我目前正在尝试将两个浮点数相乘 其中一个来自浮点向量 存储在 ebx 中的地址 并与我存储在 ecx 中的值相乘 我已经确认输入值是正确的 但是 例如 如果我将 32 乘以 1 则 EAX 中的值将更改为 00000000 而 EDX 中的
c
Assembly
floatingpoint
x86
multiplication
x86 操作码有模式吗? (方向和大小位除外)
许多重要的 x86 指令 例如 MOV 和 ADD 的操作码部分将最后两位标准化为方向位和数据大小位 此处灰色显示的操作码部分是否有任何模式 例如 对于 ADD 某些指令使用代码 000000 而其他指令则使用代码 100000 None
Assembly
encoding
x86
opcode
实模式中断处理例程未按预期工作
我设法通过执行远跳转的引导加载程序将一个小内核加载到内存中0x0090 0x0000 当我从那里打印一个字符来测试它时 内核已成功加载 并且它可以正常工作 我想重新映射中断0x08 gt 0x0F and 0x70 gt 0x77打断0x2
Assembly
x86
VirtualBox
nasm
interrupthandling
加载引导加载程序的第二阶段
我正在尝试为 x86 机器创建一个小型操作系统 并开始为相当小的引导加载程序编写代码 我创建的引导加载程序非常简单 它从位于主引导记录后面的扇区加载一个小的第二引导加载程序 并跳转到该代码 主引导记录中的引导加载程序代码似乎运行良好 当它尝
Assembly
x86
nasm
BootLoader
realmode
循环“xorl %edx,%eax; shrl $1,%edx”的目的是什么?
我有以下 x86 汇编代码 movl 8 ebp edx get an argument from the caller movl 0 eax testl edx edx je L1 L2 what s the purpose of thi
Assembly
x86
reverseengineering
decompiling
att
为什么使用push/pop而不是sub和mov?
当我使用不同的编译器时https godbolt org 我注意到编译器生成这样的代码是很常见的 push rax push rbx push rcx call rdx pop rcx pop rbx pop rax 我明白每个push o
Assembly
x86
x8664
cpuarchitecture
microoptimization
x86 中如何使用进位和溢出标志来计算乘法
当两个数字相乘溢出寄存器时 如何使用两个标志来正确计算答案 E g if al holds 0xff并乘以0x2 导致溢出到ax 这些标志对此有何帮助 Multiplication on x86 x64 never overflows wh
Assembly
x86
carryflag
eflags
我可以暂时为线程启用 FTZ 和 DAZ 浮点模式吗?
我想暂时启用FTZ DAZ模式来获得某些代码的性能增益 其中严格遵守IEEE 754标准不是问题 无需更改其他线程的行为 这些线程可能正在执行代码 其中合规性很重要 我一直在读this关于如何启用 禁用这些模式以及this关于非规范处理的性
Multithreading
floatingpoint
x86
NaN
SSE
AVX512 舍入模式如何工作(或者 NDISASM 只是混淆了)?
我正在尝试了解具体的AVX512F指令vcvtps2udq 指令的签名是VCVTPS2UDQ zmm1 k1 z zmm2 m512 m32bcst er 手册信息如下 为了尝试理解新的舍入模式 以下代码片段是用 NASM 2 12 02
Assembly
x86
nasm
avx512
Win32 入口点是否必须保留任何寄存器值(被调用者保存的寄存器)?
我正在 NASM 中编写一个程序 并且不想将其与 CRT 链接 因此我将指定入口点 这将是 Win32 入口点 这是程序源代码 global myEntryPoint section text myEntryPoint mov eax 12
WINAPI
Assembly
x86
nasm
Intel 处理器的虚拟操作处理
诚然 我有一个有点愚蠢的问题 基本上 我想知道是否 英特尔处理器提供了一些特殊的机制来有效地 执行一系列虚拟指令 即 NOP 指令 例如 我可以想象那里 可能是某种识别 NOPS 并丢弃它们的预取机制 并尝试获取一些有用的指令 或者这些 N
Assembly
x86
intel
cpuarchitecture
instructionset
使用非托管代码使用扩展名获取文件图标时在 x86 系统上出现异常
我正在开发磁盘目录应用程序 需要我使用从数据库检索的文件扩展名来获取文件图标 使用其扩展名获取文件图标的代码在具有任何 CPU 调试配置的 Windows 7 x64 计算机上工作得非常好 但是当我在调试配置中切换到 x86 时 我收到以下
c
Exception
x86
unmanaged
SFENCE和LFENCE对相邻核心的缓存有什么影响?
From the speech Herb Sutter in the figure of the slides on page 2 这里显示了单独的缓存 L1S和存储缓冲区 SB 1 在 Intel x86 处理器中cache L1 和 S
caching
Assembly
x86
intel
memorybarriers
在程序集问题中将大写字母转换为小写字母
我正在写信将预设字符串从大写转换为小写 我目前正在将地址处的内容移至 8 位寄存器 然后以一种非常草率的方式测试 ASCII 值以查看它是否为大写 有没有更干净的方法来解决这个问题 现在我从 ASCII 值中减去 65 并与 25 进行比较
Assembly
x86
MASM
lowercase
«
1 ...
38
39
40
41
42
43
44
...54
»