大家好。
问大家个问题,我用ida反汇编最简单的C语言程序 hello world程序后,看到了如下代码:
.text:00401290 push ebp
.text:00401291 mov ebp, esp
.text:00401293 sub esp, 8 ; char *
.text:00401296 and esp, 0FFFFFFF0h
.text:00401299 mov eax, 0
.text:0040129E add eax, 0Fh
.text:004012A1 add eax, 0Fh
.text:004012A4 shr eax, 4
.text:004012A7 shl eax, 4
.text:004012AA mov [ebp+var_4], eax
.text:004012AD mov eax, [ebp+var_4]
.text:004012B0 call ___chkstk
.text:004012B0
.text:004012B5 call ___main
.text:004012B5
.text:004012BA mov [esp+8+var_8], offset s_HelloWorld ; "hello world!"
.text:004012C1 call printf
.text:004012C1
.text:004012C6 mov [esp+8+var_8], offset s_Pause ; "PAUSE"
.text:004012CD call system
.text:004012CD
.text:004012D2 mov eax, 0
.text:004012D7 leave
.text:004012D8 retn
.text:004012D8
.text:004012D8 _main endp
.text:004012D8
大体意思能看懂,但是这几句:
and esp, 0FFFFFFF0h
.text:00401299 mov eax, 0
.text:0040129E add eax, 0Fh
.text:004012A1 add eax, 0Fh
.text:004012A4 shr eax, 4
.text:004012A7 shl eax, 4
.text:004012AA mov [ebp+var_4], eax
.text:004012AD mov eax, [ebp+var_4]
.text:004012B0 call ___chkstk
.text:004012B0
.text:004012B5 call ___main
.text:004012B5
具体完成了什么功能啊?
这与vc下的反汇编代码有不少区别,大家帮个忙解释一下这几句是干什么用的把?
谢谢了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!