这段代码是做什么的,它在 C 语言中是什么样子的?
What does this code do, and what does it look like in C?
我正在使用 IDA 反汇编文件,其中一个部分包含此文件。这是在做什么?用 C 语言会是什么样子?
我相信它将 edx 压入堆栈,并使用 _atoi 将其转换为整数,但在那之后 eax 中还剩下什么,为什么将它与 5 进行比较?
mov ecx, [ebp+argv]
mov edx, [ecx+4]
push edx ; char *
call _atoi
add esp, 4
mov [ebp+var_60], eax
cmp [ebp+var_60], 5
jle short loc_401167
C 代码如下所示
int var_60;
if ( (var_60 = atoi( argv[1] )) > 5 )
{
// execute the instructions after the 'jle' instruction, e.g.
printf( "Invalid argument\n" );
exit( 1 );
}
换句话说,代码会检查程序的第一个参数是否为小于或等于 5 的数字。它还会保存转换后的值供以后使用。
我正在使用 IDA 反汇编文件,其中一个部分包含此文件。这是在做什么?用 C 语言会是什么样子?
我相信它将 edx 压入堆栈,并使用 _atoi 将其转换为整数,但在那之后 eax 中还剩下什么,为什么将它与 5 进行比较?
mov ecx, [ebp+argv]
mov edx, [ecx+4]
push edx ; char *
call _atoi
add esp, 4
mov [ebp+var_60], eax
cmp [ebp+var_60], 5
jle short loc_401167
C 代码如下所示
int var_60;
if ( (var_60 = atoi( argv[1] )) > 5 )
{
// execute the instructions after the 'jle' instruction, e.g.
printf( "Invalid argument\n" );
exit( 1 );
}
换句话说,代码会检查程序的第一个参数是否为小于或等于 5 的数字。它还会保存转换后的值供以后使用。