20135206于佳心-家庭作业3.63

第三章家庭作业

选题:3.63

分值:两分

作业过程:

int sum_col(int n,int A[E1(n)][E2(n)],int j)
{
    int i;
    int result = 0;
    for(i=0;i<E1(n);i++)
        result += A[i][j];
    return result;
}

上面是原来的代码

汇编代码

movl    8(%ebp),%edx                     ;edx:n
    leal    (%edx,%edx),%eax             ;eax:2n
    leal    -1(%eax),%ecx                ;ecx:2n-1
    leal    (%eax,%edx),%esi             ;esi:3n,(E1(n))
    movl    $0,%eax                      ;eax: 0(result)
    testl    %esi,%esi                   ;检验esi(正\负\0)
    jle        .L3                       ;若esi中E1(n)≤0的话,跳转
    leal    0(,%ecx,4),%ebx              ;ebx:0+4*ecx=4(2n-1)
    movl    16(%ebp),%eax                ;eax:ebp+16(j的地址)
    movl    12(%ebp),%edx                ;edx:ebp+12(A[i]的地址)
    leal    (%edx,%eax,4),%ecx           ;ecx:edx+4*eax(A[i][j])
    movl    $0,%edx                      ;edx:0
    movl    $0,%eax                      ;eax: 0
.L4                                      ;loop
    addl    (%ecx),%eax                  ;eax+=ecx((A[i][j]的地址)
    addl    $1,%edx                      ;edx:edx+1(i)
    addl    %ebx,%ecx                    ;ecx:ecx+ebx(ecx:A[i+1][j])
    cmpl    %esi,%edx                    ;比较esi与edx(E1(n)与i的比较)
    jl        .L4                        ;如果i<E1(n),跳转,回到循环
.L3                                      ;

E1(n)存储在esi中,E1(n)=3n;
E2(n)存储在ebx中,ebx=4*E2(n),所以E2(n)=2n-1.

时间: 2024-10-21 07:56:03

20135206于佳心-家庭作业3.63的相关文章

20135206于佳心-家庭作业6.31,家庭作业6.42

6.31 A.E=4,B=4,S=8 所以C=E*B*S=128 B. 6.42 读总数为2912 不命中的读总数为728 不命中率为25%

20135206于佳心【家庭作业汇总】

选题:3.63 分值:两分 作业过程: int sum_col(int n,int A[E1(n)][E2(n)],int j) { int i; int result = 0; for(i=0;i<E1(n);i++) result += A[i][j]; return result; } 上面是原来的代码 汇编代码 movl 8(%ebp),%edx ;edx:n leal (%edx,%edx),%eax ;eax:2n leal -1(%eax),%ecx ;ecx:2n-1 leal

家庭作业二

家庭作业二(Chapter 3) P206 3.60 考虑下面的源代码,这里R,S,T都是用#define声明的常数 int A[R][S][T]; int store_ele(int i,int j,int k,int *dest) { *dest=A[i][j][k]; return sizeof(A); } 编译这个程序,GCC产生下面的汇编代码:(i at %ebp+8,j at %ebp+12,k at %ebp+16,dest at %ebp+20) movl 8(%ebp),%ec

家庭作业——第三章

第三章家庭作业    3.69和3.70 3.69 A:long trace(tree_ptr tp)    {        long ret = 0;        while(tp != NULL)        {           ret = tp->val;           tp = tp->left;        }        return ret;    } B:作用是从根一直遍历左子树,找到第一个没有左子树的节点的值. 3.70 A:long traverse(t

关于本周家庭作业

本周家庭作业 是仿照老师给的网页图片做像素级还原. 个人认为,其中涉及到的知识点有: 1. 语义化标签的用法: 2. 表单的用法以及其属性的意义: 3. 相对定位的用法: 4. 浮动的操作: 5. 浮动的清除方式: 采用overflow不等于visible的方式 采用clear方式 使用伪类:after方式 6. 无序列表的用法: 7. 二级菜单的制作:(此处不会,只好等着老师来讲解,已查过资料,主要归结为自己太笨……) 8. display各个属性的意义及用法: 9. sprinte图片切割的

信息安全系统设计基础家庭作业

<深入理解计算机系统>家庭作业 * 8.9 答案: 进程对 是否并发 AB 否 AC 是 AD 是 BC 是 BD 是 CD 是 * 8.10 答案: A. 调用一次,返回两次: fork B. 调用一次,从不返回: execve, longjmp C. 调用一次,返回一次或者多次: setjmp * 8.11 答案: 这个程序会输出4个“hello”输出行. 因为Fork()函数的作用是调用一次返回两次.根据条件i<2,当 i = 0 时,输出2个hello,当 i = 1 时,输出2

家庭作业汇总

家庭作业 8.21 首先可以看出不论是先打印子进程还是父进程都必须满足a在c的前面,b在c的前面这两种顺序. 但是由于无法判断子进程和父进程的并发序列,所以会有一下几种输出结果:acbc.abcc.bcac.bacc. 汇总 8.21 两星题 2′           共2′

20135223何伟钦—第六章家庭作业

第六章作业 一.家庭作业6.36(20135203&&20135223) (由于题6.36与6.35基本题型一样,只是高速缓存的数据字节不一样,我直接把6.35题目修改后作为6.36题目) 考虑下面的矩阵转置函数: typedef int array[4][4]; void transpose2(array dst,array src) { int i,j; for(i=0;i<4;i++) { for(j=0;j<4;j++) { dst[i][j]=src[j][i]; }

20135306、20135307家庭作业3.70答案

家庭作业3.70 (1)生成以上代码的C版本 Long  traverse(tree_ptr tp) { Long  v = MAX_LONG, rv, lv; If (tp != NULL) { lv = traverse(tp->left); rv = traverse(tp->right); v = lv < rv ? lv : rv  //Line16 cmovle: if(r12<rax) rax=r12; v = v > tp->v ? tp->v :