2023-2024-1 20232809《Linux内核原理与分析》第二周作业

目录

一、利用GPT工具学习教材一、二章

二、实验楼:实验一

1.编写main.c代码

2.编译代码并删除所有以“.”打头的字符串

3.代码分析:


一、利用GPT工具学习教材一、二章

二、实验楼:实验一

1.编写main.c代码

2.编译代码并删除所有以“.”打头的字符串

3.代码分析:

函数main:
pushl %ebp                                    #将EBP(栈基值)寄存器的值压入栈中
movl %esp,%ebp                           #EBP指针指向标号1的位置
subl $4,%esp                                 #ESP指针向下增1,指向下一个标号位置
movl $20230000, (%esp)               #将立即数20230000放入ESP寄存器指向的标号2位置
call f                                               #调用g函数,先将ESP后移,存储现在EIP寄存器内的值,然后EBP内的值压榨存储到下一标号位置

函数f:
pushl %ebp                                  #把ESP寄存器的值向下移到标号4
movl %esp, %ebp                        #把EBP寄存器的值标号1放到栈空间标号4的位置
subl $4,%esp                               #ESP寄存器指针向下加1,指向下一个标号位置
movl 8(%ebp), %eax                   #把立即数8放到EAX的寄存器
movl %eax,( %esp)                   #将EAX寄存器里的值放到ESP所指的位置
call g                                            #调用g函数,先将ESP后移,存储现在EIP寄存器内的值,然后EBP内的值压榨存储到下一标号位置

函数g:
pushl %ebp                           #将EBP(栈基值)寄存器的值入栈
movl %esp, %ebp                 #让EBP和ESP指向同一个位置
movl 8(%ebp), %eax            #将EBP指针前两个标号位置的内容放入EAX运算单元内
addl $2800,%eax                  #将EAX内的值+2800
popl %ebp                            #将标号7放入EBP寄存器里,让EBP指针回归上一级函数的栈底
ret                                         #函数返回,将标号6内的值放入EIP寄存器内

函数f:
leave                                   #销毁f函数的这一部分工作站栈
ret                                        #函数返回,将标号3内的值放入EIP寄存器内

函数main:
addl $9,%eax                    #将EAX中内容加9,EAX寄存器是默认存储函数返回值的寄存器
leave                                    #销毁main函数工作栈
ret                                        #函数返回

最终输出结果为:20232809

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值