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;
}
}
}