20165217第四周学习总结

教材学习内容总结

  • Y86-64指令:Y86-64指令是x86-84指令集的一个子集。它只包括8字节整数操作。有4个整数操作指令:addq、subq、andq和xorq。有7个跳转指令:jmp、jle、jl、je、jne、jge和jg。有6个条件传送指令:cmovle、cmovl、cmove、cmovne、cmovge和cmovg。
  • 程序员可见的状态:Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分,这称为程序员可见状态。包括:程序寄存器、条件码、程序状态、程序计数器和内存。

程序寄存器(RF):

%rax,%rsp,%r8,%r12,%rcx,%rbp,%r9,%r13,%rdr,%rsi,%r10,%r14,%rbr,%rdi,%r11;

条件码:ZF\SF\OF;

  • 结果为0,ZF = 1;
  • 结果最高位即SF;
  • 无符号运算无意义,发生溢出,OF = 1;

Y86-64指令集:

Y86-64程序寄存器标识符:

Y86-64指令集的功能码:

上周考试错题总结

错题1:

Linux汇编中,销毁栈帧的语句是( )

A .
movq %rbp, %rsp
popq %rbp
B .
leave
C .
enter
D .
pushq %rbp
movq %rsp, %rbp

答案:A B

解析:leave等价于:

movq %rbp, %rsp

popq %rbp

错题2:

x86-64中,(%rsp)寄存器用来保存运行时栈的结束位置(栈顶)。

posted @ 2018-10-21 22:22  叶佺  阅读(168)  评论(0编辑  收藏  举报