本来我自己计算的时候写了一大堆,不过还是挑重点的讲吧:
这是strlen的反汇编代码
004010F0 >/$ 8B4C24 04 mov ecx,dword ptr ss:[esp+0x4] ; ecx=字符串地址
004010F4 |. F7C1 03000000 test ecx,0x3
004010FA |. 74 14 je short Test_CPP.00401110
004010FC |> 8A01 /mov al,byte ptr ds:[ecx]
004010FE |. 41 |inc ecx
004010FF |. 84C0 |test al,al
00401101 |. 74 40 |je short Test_CPP.00401143
00401103 |. F7C1 03000000 |test ecx,0x3
00401109 |.^ 75 F1 \jnz short Test_CPP.004010FC
0040110B |. 05 00000000 add eax,0x0
00401110 |> 8B01 /mov eax,dword ptr ds:[ecx]
00401112 |. BA FFFEFE7E |mov edx,0x7EFEFEFF
00401117 |. 03D0 |add edx,eax
00401119 |. 83F0 FF |xor eax,0xFFFFFFFF
0040111C |. 33C2 |xor eax,edx
0040111E |. 83C1 0