pwa*_*ing 5 c assembly gcc gdb
我有以下简单的程序,我正在使用它来刷新我对GDB的记忆(我多年没有触及).
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 10; i++)
{
printf("Hello World\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我用它编译gcc -g for-test.c -o for-test
.基于手册页,我不希望使用任何优化,因为我没有指定任何优化.
当我将其加载到GDB并运行时disassemble main
,i < 10
比较生成以下内容:
cmp DWORD PTR [rbp-0x4],0x9
jle 0x4004fe <main+10>
Run Code Online (Sandbox Code Playgroud)
这似乎已经有效地改变的比较i < 10
来i <= 9
.鉴于这些是整数比较,应该没有区别,但我想知道GCC是否有任何理由输出这个程序集,而不是与10进行比较并且如果小于(JL)则跳跃?
编辑:这是在具有64位处理器的计算机上,运行Ubuntu与GCC 4.6.3和GDB 7.4-2012.04.
归档时间: |
|
查看次数: |
216 次 |
最近记录: |