- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在查看一些编译器输出,当一个函数被调用时,它通常会像这样开始设置调用堆栈:
PUSH EBP
MOV EBP, ESP
PUSH EDI
PUSH ESI
PUSH EBX
LEA ESP, [EBP-0Ch]
POP EBX
POP ESI
POP EDI
POP EBP
RET
IN AL, DX
PUSH EDI
PUSH ESI
PUSH EBX
IN AL, DX
读入
AL
寄存器,与
EAX
相同注册,当它发生时,这里的下一个命令是
XOR EAX, EAX
IN AL, DX
是单字节
EC
, 而这对指令
55 88 EC
.反汇编器是否以某种方式误读了这个?还是依赖于我不明白的副作用?
class C {
string s = "";
public void f(string s) {
this.s = s;
}
}
IN AL, DX
版本,而其他时候有
PUSH EBP
后跟一个
MOV EBP, ESP
.
IN AL, DX
(操作码
EC
)和内存中的前两个字节是
55 88
.所以也许反汇编器只是对方法的入口点感到困惑。 (虽然我仍然想知道为什么会发生这种情况!)
最佳答案
听起来您正在使用 VS2015。你的结论是正确的,它的调试引擎有很多错误。是的,地址错误。不是唯一的问题,它不能正确恢复断点,您很容易看到代码中仍然存在 INT3 指令。当抖动重新生成代码并替换 stub 调用时,它无法正确刷新反汇编。你不能相信你看到的任何东西。
我建议您使用工具 > 选项 > 调试 > 常规并勾选“使用托管兼容模式”复选框。这迫使调试器使用较旧的调试引擎 VS2010 Vintage。它要稳定得多。
您将失去此引擎的一些功能,例如返回值检查和 64 位编辑+继续。做这种调试时不会错过。但是,您将看到假代码地址,这在以前很常见,因此所有 CALL 地址都是错误的,您无法轻松识别对 CLR 的调用。来回翻转引擎是一种解决方法,但当然是一个很大的烦恼。
这也没有得到解决,我在更新中没有看到任何改进。但毫无疑问,他们有一个很大的错误列表需要处理,VS2015 在完成之前就发布了。希望 VS2017 更好,我们很快就会发现。
关于visual-studio - 编译器在设置调用堆栈时生成了意外的 `IN AL, DX`(操作码 `EC`),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308113/
我有一些未知的 C++ 代码是在发布版本中编译的,因此对其进行了优化。我正在努力解决的问题是: xor al, al add esp, 8 cmp byte ptr [ebp+
print_string: lodsb ; grab a byte from SI cmp al, 0 ;or al, al ; logical or AL by i
如何用 C 语言编写 test al,al 代码? 我试过 if((n & 0xFF) & 0){} 但这不正确。 谢谢。 最佳答案 我猜你接下来要检查零标志,即 jz 或类似的。在那种情况下你会想要
我在我的 Centos5 机器上运行了这个: ls -al & ; ls -al 我期待它在后台运行 ls -al,同时在前台运行 ls -al,并演示终端的输出是如何被破坏的通过这样做。 但是,我得
ArrayList al = new ArrayList(); 和有什么区别? ArrayList al = new ArrayList(0)? 最佳答案 ArrayList(0) 具有指定初始容量的
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: List versus ArrayList 之间的区别 ArrayList al = new ArrayLi
这是我的代码: section .data digit db 0,10 section .text global _start _start: call _printRAXD
我已经在 XCode 中创建了一个项目并添加了 OpenAL 框架。当我尝试包含 AL/al.h 时,编译器仍然找不到它。 我在哪里添加 OpenAL 的包含目录? 编辑:抱歉我忘了补充:我正在使用
问题陈述:需要从ymm0寄存器中提取位于其值在寄存器AL中的位置的字节。 我的方法:(相当难看): ; Set XMM1 to be a "shift one byte by righ
在调试使用信号量进行跨进程同步的应用程序时,我偶然发现了使用PowerShell代替“其他”进程的想法。在PowerShell中执行以下操作可以正常工作: // In C# application:
我正在尝试为用户显示电影推荐列表。模型已经过训练,但在尝试显示预测时出现错误。 als = ALS(maxIter=5, regParam=0.01, userCol="userID", itemCo
我们在 Azure Spark 上使用 ALS 来构建我们的推荐系统。 由于计算能力的原因,我们无法为每个用户输出不同的推荐列表。因此,我们将用户分为聚类,并使用 ALS 为每个单独的聚类质心输出推荐
我正在阅读一个反汇编的 win32 c++ 程序,我看到了很多: AND AL,0xFF 这是完全没有意义的还是为什么编译器会生成这些? 这是一个更长的例子: movsx eax, byte pt
我对用于推荐引擎的 ALS 有疑问? ALS 是确定性的吗?比如,如果你输入相同的数据和相同的参数,你是否应该总是得到相同的输出(或非常相似的结果)? 最佳答案 简短的回答应该是:NO。矩阵分解算法的
我正在使用 gtk 和 xlib(xtst) 创建一个程序来将假按键发送到应用程序,我创建了这个循环来将按键发送到事件窗口: Display *dis; dis = XOpenDisp
我正在尝试使用带有隐式反馈的 Spark MLib ALS 进行协作过滤。输入数据只有两个字段userId和productId。我没有产品评分,只有用户购买过哪些产品的信息,仅此而已。因此,为了训练
我正在做一个处理 x86 汇编语言的二进制炸弹实验室作业(我相信是 at&t)。我正在运行我的代码并走到最后,但最后我将我的 306 值与这个 %al 寄存器进行比较,我不知道如何获得它的值,因为我尝
有人可以指导我在linux中ls -ali输出的每一列描述什么吗? 最佳答案 ls -ali 类似这样的事情 67403780 -rw-------. 1 root root 1114 12月
我找到了一些声称使用 openAL 列出所有音频输出设备的示例,但是我只能让它们列出当前在 OSX(Yosemite、Maverick)上选择的设备。我使用的是 mac,有默认声卡(内置输出)以及 a
我想根据日期对“ls -al”命令的输出进行排序。我可以使用命令轻松地为一列执行此操作: $ ls -al | sort -k6 -M -r 但是如何同时对第 6 列和第 7 列执行此操作?命令: $
我是一名优秀的程序员,十分优秀!