2017-2018-1 20155313 《信息安全系统设计基础》第八周课下作业

2017-2018-1 20155313 《信息安全系统设计基础》第八周课下作业

课下作业1:

1 完成家庭作业4.47,4.48,4.49

2 相应代码反汇编成X86-64汇编

3 把上述X86-64汇编翻译成Y86汇编,并给出相应机器码

发操作过程、测试、问题解决过程博客链接

1 完成家庭作业4.47,4.48,4.49

4.47

冒泡排序实现:
void bubble_a(int *data, int count){  
    int i,next;  
    for(next = 1; next < count; next++){  
        for(i = next - 1; i >= 0; i--)  
            if(*(data + i + 1) < *(data + i)){  
                int t = *(data + i + 1);  
                *(data + i + 1) = *(data + i);  
                *(data + i) = t;  
            }  
    }  
}  

X86-64汇编:

Y86-64汇编:

机械码截图:

4.48

实现冒泡排序,要求不使用跳转,且最多使用3次条件传送。
void bubble_c(int *data,int count)

{
    int i , next;
    int pre_ele,next_ele;
    for(next = 1;next < count;next++)
    {
        for(i = next -1;i >= 0;i--)
        {
            pre_ele = *(data + i);

            next_ele = *(data + i + 1);

            *(data + i) = next_ele < pre_ele ? next_ele : pre_ele;

            *(data + i + 1) = pre_ele;
        }
    }
}

X86-64汇编:

Y86-64汇编:

4.49

实现冒泡排序,要求不使用跳转,且最多使用1次条件传送。

void bubble_c(int *data,int count)

{
    int i , next;
    int pre_ele,next_ele;
    for(next = 1;next < count;next++)
    {
        for(i = next -1;i >= 0;i--)
        {
            pre_ele = *(data + i);
            next_ele = *(data + i + 1);
            *(data + i) = next_ele < pre_ele ? next_ele : pre_ele;
            *(data + i + 1) = next_ele < pre_ele ? pre_ele : next_ele;
        }
    }
}


X86-64汇编:

Y86-64汇编:

posted @ 2017-11-12 22:48  BonsaiYoung  阅读(168)  评论(0编辑  收藏  举报