Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
在 SSE2/SSSE3 上转置 8 个 16 位元素寄存器
我是 SSE asm 的新手 如果这是显而易见的或多余的 我深表歉意 有没有比执行 24 个 unpck lh ps 和 8 16 混洗以及使用 8 个额外寄存器更好的方法来转置包含 16 位值的 8 个 SSE 寄存器 注意最多使用 SS
Assembly
matrix
x86
SSE
SIMD
有没有办法检查处理器缓存最近是否已刷新?
在 i386 linux 上 如果可能的话 最好在 c c posix std libs proc 中 如果没有 是否有任何程序集或第三方库可以做到这一点 编辑 我正在尝试开发测试内核模块是否清除缓存行或整个处理器 使用 wbinvd 程序
Linux
x86
CPU
cpuarchitecture
cpucache
x86 操作码是任意的吗?
x86 操作码是任意的吗 有没有理由hlt是 0xf4 并且nop是0x90吗 该架构的早期版本 8008 8080 是使用极少量的晶体管 逻辑门来实现的 当时 我确信设计者以易于解码的方式选择了操作码和指令格式 例如 最少的门数 这些说明
Assembly
x86
machinecode
为什么mov指令使用ax而不是直接使用两个段寄存器?
我看到这样的代码 mov ax cs mov ds ax mov es ax 为什么我不能将其压缩为 mov ds cs mov es cs 由于使用累加器寄存器 第一种方法是否更快 但这似乎不直观 因为 cs 和 ds 是段寄存器 还是有
Assembly
x86
nasm
accumulator
addressingmode
SIMD 最小磁极和最大磁极
我想实现SIMD最小磁极和最大磁极函数 据我了解这些功能是 minmag a b a lt b a b maxmag a b a gt b a b 我想要这些浮点型和双精度型 我的目标硬件是 Haswell 我真正需要的是计算两者的代码 这
Assembly
floatingpoint
x86
SSE
avx
bool 读/写操作在 x86 上可以不是原子的吗? [复制]
这个问题在这里已经有答案了 假设我们有两个线程 一个正在循环中读取布尔值 另一个可以在特定时间切换它 我个人认为这应该是原子的 因为sizeof bool 在 C 中是 1 个字节 并且您不会部分读取 写入字节 但我想 100 确定 那么是
c
x86
Boolean
atomic
当处理器尝试访问不存在的物理地址时会发生什么?
想象一台内存小于 3 GB 的 32 位 x86 计算机 其 CPU 设置为禁用分页和平段描述符 0x0作为基础 0xffffffff作为数据和代码的有效限制 当ring0中的指令尝试使用a时会发生什么mov指令引用不受任何内存地址支持的物
Assembly
x86
RAM
osdev
addressspace
x86 CPU 有多少条内存屏障指令?
我发现 x86 CPU 有以下内存屏障指令 mfence lfence and sfence x86 CPU 是否只有这三个内存屏障指令 还是还有更多 sfence 上交所1 和mfence lfence SSE2 是唯一以其内存栅栏 屏障
Multithreading
Assembly
x86
memorybarriers
Skylake L2 缓存通过减少关联性增强?
In 英特尔的优化指南在第 2 1 3 节中 他们列出了 Skylake 中缓存和内存子系统的许多增强功能 重点是我的 Skylake微架构的缓存层次结构有以下 增强功能 与前几代相比 缓存带宽更高 通过扩大的缓冲区可以同时处理更多的负载和
x86
CPU
intel
cpucache
如何对 __m128 类型变量中的浮点元素取反(更改符号)?
是否有任何单个指令或函数可以反转符号 m128 内的每个浮点数 IE a r0 r1 r2 r3 gt a r0 r1 r2 r3 我知道这可以通过 mm sub ps mm set1 ps 0 0 a 但它不是可能很慢吗 mm set1
c
x86
vectorization
SSE
SIMD
存储指令是否会在缓存未命中时阻塞后续指令?
假设我们有一个具有两个核心 C0 和 C1 的处理器和一个从地址开始的高速缓存行k最初由 C0 拥有 如果 C1 在第 8 行的 8 字节槽上发出存储指令k 这会影响 C1 上执行的以下指令的吞吐量吗 intel优化手册有如下一段 当指令将
c
concurrency
x86
cpuarchitecture
cpucache
如何编写可以运行 x86 十六进制代码的 C 程序
我有一组十六进制代码 可以转换为汇编指令 我想用 C 语言创建可以执行这些指令的程序 unsigned char rawData 5356 0x4C 0x01 0x0A 0x00 0x00 0x00 0x00 0x00 0x64 0x0C
c
x86
inlineassembly
x86 CPU 会重新排序指令吗?
我读过一些CPU重新排序指令 但这对于单线程程序来说不是问题 指令在单线程程序中仍然会重新排序 但看起来好像指令是按顺序执行的 这只是一个问题对于多线程程序 为了解决指令重排序的问题 我们可以在代码中适当的位置插入内存屏障 但是 x86 C
Multithreading
Assembly
x86
cpuarchitecture
memorybarriers
我可以在gdb下打印gdtr和gdt描述符吗?
I want to use gdb to see my GDTR LDTR TTR and segment register 不可见部分 x86 所以在 gdb 中我输入 p x gdtr 等 但结果是 6 值无法转换为整数 在 gdb 中
Assembly
Linuxkernel
x86
GDB
gdt
了解堆栈对齐强制
考虑以下 C 代码 include
gcc
Assembly
x86
memoryalignment
ABI
如何在 NASM 汇编中进入 32 位保护模式?
我正在学习 x86 汇编 并且正在尝试在 NASM 中制作一个玩具操作系统 但我不明白一些东西 我制作了一个成功启动内核的引导加载程序 从包含内核文件的软盘中加载 14 个扇区 在这些标记为的扇区中搜索文件kernel feo 将该文件加载
Assembly
x86
nasm
gdt
当前的 C++ 编译器是否曾发出“rep movsb/w/d”?
This question让我想知道 当前的现代编译器是否曾经发出过REP MOVSB W D操作说明 基于此讨论 似乎使用REP MOVSB W D对当前的 CPU 可能会有好处 但无论我如何尝试 我都无法使任何当前的编译器 GCC 8
c
Assembly
x86
compileroptimization
microoptimization
“DS:[40207A]”在汇编中是什么意思?
0040103A CALL DWORD PTR DS 40207A USER32 MessageBoxA 什么是DS mean 该指令正在从内存加载新的 EIP 值ds 40207A 即地址处有一个函数指针40207A 它推送一个返回地址
Assembly
x86
memoryaddress
disassembly
memorysegmentation
rdtscp 的“半栅栏”行为是怎么回事?
多年来 x86 CPU 支持rdtsc指令 读取当前CPU的 时间戳计数器 该计数器的确切定义随着时间的推移而发生变化 但在最近的 CPU 上 它是一个相对于挂钟时间以固定频率递增的计数器 因此它作为快速 准确的时钟的构建块或测量时间非常有
performance
Assembly
x86
microbenchmark
RDTSC
汇编语言有多不可移植,/真的/?
我知道用汇编语言编写任何内容或将汇编语言添加到任何程序都会损害其可移植性 但是 有多糟糕呢 我的意思是 现在基本上所有 PC 都是 x86 或 x64 对吧 那么 如果我将汇编嵌入到 C 程序中 为什么无论它去了哪里它仍然无法编译 这种不可
Assembly
x86
64bit
portability
«
1 ...
43
44
45
46
47
48
49
...51
»