|
发表于 2018-4-3 08:55:49
|
显示全部楼层
"觉我前两问都做对了,觉得这种标签不能直接运行"
标签不管怎样也不会运行,即使有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语言,也不认识汇编语言,计算机只是在无条件执行指令,直到能源耗尽
暂时先不要深究这些,因为这是你之后的课程,这是你未来要学的汇编语言
|
|