小编Wal*_*ght的帖子

"内存不足"是一个可恢复的错误?

我已经编程了很长时间,我看到的程序,当它们内存不足时,会尝试清理并退出,即优雅地失败.我不记得上次我看到一个人真正尝试恢复并继续正常运行.

如此多的处理依赖于能够成功分配内存,特别是在垃圾收集语言中,似乎内存不足错误应归类为不可恢复.(不可恢复的错误包括堆栈溢出等.)

使其成为可恢复错误的令人信服的理由是什么?

language-agnostic memory memory-management exception error-recovery

74
推荐指数
7
解决办法
7950
查看次数

在多核x86上,是否需要作为XCHG前缀的LOCK?

如果mem是共享内存位置,我是否需要:

XCHG EAX,mem
Run Code Online (Sandbox Code Playgroud)

要么:

LOCK XCHG EAX,mem
Run Code Online (Sandbox Code Playgroud)

原子地进行交换?

谷歌搜索这会产生是和否答案.有没有人知道这个?

x86 multithreading atomicity

19
推荐指数
3
解决办法
5899
查看次数

REX.B覆盖是否适用于MOVSS指令?

我正在为64位x86生成以下指令:

41 F3 0F 10 46 10       movss   XMM0,014h[R14]
Run Code Online (Sandbox Code Playgroud)

不幸的是,它在该行上出现故障.gdb将其反汇编为:

0x0000000000402054 <+320>:   rex.B
0x0000000000402055 <+321>:   movss  0x14(%rsi),%xmm0
Run Code Online (Sandbox Code Playgroud)

请注意,无法识别rex.B覆盖,索引是RSI而不是R14.

指令无效吗?在AMD 64位指令参考中,我找不到任何迹象表明此编码无效.

objdump也无法将其识别为有效指令:

41                      rex.B
f3 0f 10 46 10          movss  0x10(%rsi),%xmm0
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

assembly x86-64

11
推荐指数
1
解决办法
629
查看次数