我有用C#编写的简单程序:
static void Main(string[] args)
{
int a = 0;
for (int i = 0; i < 100; ++i)
a = a + 1;
Console.WriteLine(a);
}
Run Code Online (Sandbox Code Playgroud)
我是编程领域的新手,我的目的只是了解JIT创建的汇编代码.这是一段asm代码:
7: int a = 0;
0000003c xor edx,edx
0000003e mov dword ptr [ebp-40h],edx
8: for (int i = 0; i < 100; ++i)
00000041 xor edx,edx
00000043 mov dword ptr [ebp-44h],edx
Run Code Online (Sandbox Code Playgroud)
我无法理解代码:0000003c xor edx,edx.存储的操作结果在哪里?我在"英特尔®64和IA-32架构软件开发人员手册"中只找到了这样的引用:
逻辑指令AND,OR,XOR(异或)和NOT执行为其命名的标准布尔运算.AND,OR和XOR指令需要两个操作数; NOT指令在单个操作数上运行
编辑:据我所知,这个结果应该存储在edx(见下一个代码行).但对我来说这似乎很奇怪.我以为结果会被推到堆栈上
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |