A. 每个通用寄存器都可作为32位、16位或8位寄存器使用 B. 寄存器EAX/AX/AL称为累加器,ECX/CX/CL称为计数寄存器 C. 寄存器ESP/SP称为栈指针寄存器,EBP/BP称为基址指针寄存器 D. EIP/IP为指令指针寄存器,即PC;EFLAGS/FLAGS为标志寄存器
A. Itanium和Itanium 2 B. Pentium (II、III、4) C. 80386和80486 D. Core(i3、i5、i7)
A. 对于加减运算指令,操作数不区分是无符号整数还是带符号整数 B. 除乘法指令外,其他运算指令的源操作数和目的操作数的位数相等 C. 参加运算的操作数可以是一个字节(8b)、一个字(16b)或双字(32b) D. 对于乘除运算指令,操作数一定区分是无符号整数还是带符号整数
A. C语言程序中的函数调用就是过程调用 B. 从P传到Q的实参无需重新分配空间存放 C. 从P跳转到Q执行应使用CALL指令 D. 从Q跳回到Q执行应使用RET指令
A. 过程嵌套调用深度越深,栈中栈帧个数越多,严重时会发生栈溢出 B. 从被调用过程返回调用过程之前,被调用过程会释放自己的栈帧 C. 每进行一次过程调用,用户栈从高地址向低地址增长出一个栈帧 D. 只能通过将栈指针ESP作为基址寄存器来访问用户栈中的数据
A. 静态(static型)变量和非静态局部(auto型)变量都分配在对应栈帧中 B. 因为非静态局部变量被分配在栈中,所以其作用域仅在过程体内 C. 非静态局部变量可以和全局变量同名,是因为它们被分配在不同存储区 D. 不同过程中的非静态局部变量可以同名,是因为它们被分配在不同栈帧中
A. 第1条指令将过程P的EBP内容压入caller栈帧 B. 第2条指令使BEP内容指向caller栈帧的底部 C. 第3条指令将栈指针ESP向高地址方向移动,以生成当前栈帧 D. 从上述指令序列可看出,caller函数没有使用被调用者保存寄存器
A. 变量t1和t2的有效地址分别为R[ebp]-12和R[ebp]-8 B. 变量t1所在的地址高(或大)于变量t2所在的地址 C. 参数t1和t2的有效地址分别为R[esp]和R[esp]+4 D. 参数t1所在的地址低(或小)于参数t2所在的地址
A. 一定包含一条无条件转移指令 B. 对应then_statement的代码一定在对应else_statement的代码之前 C. 一定包含一条条件转移指令(分支指令) D. 计算cond_expr的代码段一定在条件转移指令之前
A. 一定至少包含一条条件转移指令 B. 不一定包含无条件转移指令 C. 循环体内执行的指令不包含条件转移指令 D. 循环结束条件通常用一条比较指令CMP来实现