这是一个汇编/c 问题。
我有这个简单的 C 程序:
main ()
{
register int i = 0;
register int c = 0;
static int A[5]= {1,2,3,4,5};
Loop: c=c+A[i];
i=i+1;
if (i!=5) goto Loop;
}
首先我编译这个程序并使用 gdbtui 运行调试,然后使用 display/I $pc 来跟踪细节。我看到 add 指令被执行c=c+A[i];
但我看到 'add' 指令被执行i=i+1
;
这是为什么?
- - 编辑 - -
澄清:
我一步一步调试这个,如下图,我的问题是为什么我看到 This i=i+1; 由 not c=c+A[i]; 执行。
Breakpoint 1, main() at loop.c:3
register int i = 0;
(gdb) step
i=i+1;
(gdb) step
if (i!=5) goto Loop;
(gdb) step
i=i+1;
(gdb) step
if (i!=5) goto Loop;
我期待这里是这样的:
(gdb) 步骤
c=c+A[i];