一段C++编译器生成的汇编代码,请高手帮忙解释一下
armos 2009-01-10 12:22:02 ; Attributes: bp-based frame
sub_405598 proc near
var_4= dword ptr -4
arg_0= dword ptr 8
push ebp
mov ebp, esp
add esp, -8
mov eax, [ebp+arg_0]
cmp dword ptr [eax+5A4h], 0
jnz short loc_4055B1
---------------------------
loc_4055B1: ; flags
push 0
mov edx, 10010h
mov ecx, [ebp+arg_0]
sub edx, [ecx+59Eh]
push edx ; len
mov eax, [ebp+arg_0]
mov edx, [eax+5A4h]
mov ecx, [ebp+arg_0]
add edx, [ecx+59Eh]
push edx ; buf
mov eax, [ebp+arg_0]
push dword ptr [eax+0DDh] ; s
call recv
mov edx, [ebp+arg_0]
mov [edx+59Ah], eax
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+59Ah], 0FFFFFFFFh
jnz short loc_4055FF
---------------------------
loc_4055FF:
mov edx, [ebp+arg_0]
cmp byte ptr [edx+5A3h], 0
jz loc_4056AB
---------------------------
loc_4056AB:
mov ecx, [ebp+arg_0]
mov eax, [ecx+59Ah]
mov edx, [ebp+arg_0]
add [edx+59Eh], eax
mov ecx, [ebp+arg_0]
mov eax, [ecx+5A4h]
movzx edx, word ptr [eax+0Ch]
mov [ebp+var_4], edx
mov ecx, [ebp+arg_0]
mov eax, [ecx+59Eh]
add eax, 0FFFFFFF0h
cmp eax, [ebp+var_4]
jl short loc_405703
---------------------------
loc_405703:
xor eax, eax
pop ecx
pop ecx
pop ebp
retn
sub_405598 endp