文章
412
粉丝
1102
获赞
1723
访问
141w
(1)调用10次,执行第16行的call指令
(2)第12行的jle指令为条件转移指令,ret,jmp,call指令一定会使程序跳转执行
(3)16行指令字长为5字节,应为00401025+0000005=0040102A,采用相对寻址,跳转到00401000处,pc存储下一条指令地址,所以相对偏移量应为0040102A-00401000=0000002A,所以应采用大端方式
(4)阶乘应该全为正数,图中程序为imul,相比无符号整数的表示范围小,可能产生溢出导致结果错误,应将程序中的imul改为umul。
(5)当高32位乘积不全为低32位乘积的符号位时,结果发生溢出,应该添加一个自陷指令
评分及理由
(1)得分及理由(满分2分)
得分:2分
理由:答案完全正确,调用次数和递归调用指令均准确。
(2)得分及理由(满分2分)
得分:2分
理由:答案完全正确,条件转移指令和跳转指令均准确。
(3)得分及理由(满分4分)
得分:1分
理由:第一问正确(17行地址计算正确)。第二问错误(偏移量计算错误,应为补码形式且符号扩展)。第三问错误(偏移量字段分析错误,应为小端方式)。
(4)得分及理由(满分4分)
得分:1分
理由:第一问未明确说明溢出原因(未指出int范围限制)。第二问解决方案错误(修改为无符号乘法不能解决问题,应改为更大范围的数据类型)。
(5)得分及理由(满分4分)
得分:2分
理由:第一问描述不严谨(未明确高33位的判断条件)。第二问正确(自陷指令正确)。
题目总分:2+2+1+1+2=8分
登录后发布评论
暂无评论,来抢沙发