首页 > 试题广场 >

仔细阅读所给 C 程序及其汇编代码片段。 (1) 指出 波浪

[问答题]
仔细阅读所给 C 程序及其汇编代码片段。
(1) 指出 波浪线处的 汇编代码的作用;
(2) 补全下划线处的空白汇编代码。


(1)该汇编代码序列的作用,就是给局部数组 a 赋初值。
(2)空白处汇编代码如下:
addl $24,%eax
// &a 为指向含 6 个整数的数组的指针,为 所指对象字节大小为 6 ×4 =24 字节。
// 因此,&a + 1 中的+1, 表示 为加 24 。
subl $4, %eax
// 指针 p 为指向整型变量的指针,为 所指对象字节大小为 4 字节,
// 故而 ,p-1 中-1 表示为减 4 。
pushl (%eax)
// 传递参数。因为实参为指针,故而将其值传入。
addl $16, %esp
// 回收 printf 函数 调用时 的参数空间
// 两个参数,计 8 字节,再加上调用前下调栈顶的 8 字节,共计 16 字节!
leal -8(%ebp), %esp
// 重置栈顶,指向保存的两个寄存器值的较低单元位置
//  这样,便于恢复所保存的两个寄存器
发表于 2017-05-02 13:02:45 回复(0)