"觉我前两问都做对了,觉得这种标签不能直接运行"
标签不管怎样也不会运行,即使有goto
int main(void)
{
01161790 55 push ebp
01161791 8B EC mov ebp,esp
01161793 81 EC D0 00 00 00 sub esp,0D0h
01161799 53 push ebx
0116179A 56 push esi
0116179B 57 push edi
0116179C 8D BD 30 FF FF FF lea edi,[ebp-0D0h]
011617A2 B9 34 00 00 00 mov ecx,34h
# include<stdio.h>
int main(void)
{
011617A7 B8 CC CC CC CC mov eax,0CCCCCCCCh
011617AC F3 AB rep stos dword ptr es:[edi]
long count = 0;
011617AE C7 45 F8 00 00 00 00 mov dword ptr [count],0
retry: printf("%ld\n", count++);
011617B5 8B 45 F8 mov eax,dword ptr [count]
011617B8 89 85 30 FF FF FF mov dword ptr [ebp-0D0h],eax
011617BE 8B 4D F8 mov ecx,dword ptr [count]
011617C1 83 C1 01 add ecx,1
011617C4 89 4D F8 mov dword ptr [count],ecx
011617C7 8B 95 30 FF FF FF mov edx,dword ptr [ebp-0D0h]
011617CD 52 push edx
011617CE 68 30 7B 16 01 push offset string "%ld\n" (01167B30h)
011617D3 E8 5C FB FF FF call _printf (01161334h)
011617D8 83 C4 08 add esp,8
goto retry;
011617DB EB D8 jmp retry (011617B5h)
return 0;
011617DD 33 C0 xor eax,eax
}
标签就是一个地址
在这里 retry这个标签就是011617B5h地址
goto被直接翻译成了jmp
别忘了,计算机并不认识C语言,也不认识汇编语言,计算机只是在无条件执行指令,直到能源耗尽
暂时先不要深究这些,因为这是你之后的课程,这是你未来要学的汇编语言
|