您的位置:首页 > 其它

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

2017-11-12 22:48 393 查看

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汇编:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: