2011 年 408 真题
2011 年 408 计算机组成原理 · 第 43 题
选中文字高亮 · 下划线
假定在一个 8 位字长的计算机中运行如下 C 程序段:
unsigned int x=134;
unsigned int y=246;
int m=x;
int n=y;
unsigned int z1=x-y;
unsigned int z2=x+y;
int k1=m-n;
int k2=m+n;
若编译器编译时将 8 个 8 位寄存器 R1~R8 分别分配给变量 x、y、m、n、z1、z2、k1 和 k2。请回答下列问题。(提示:带符号整数用补码表示)
(1) 执行上述程序段后,寄存器 R1、R5 和 R6 的内容分别是什么(用十六进制表示)?
(2) 执行上述程序段后,变量 m 和 k1 的值分别是多少(用十进制表示)?
(3) 上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用同一个加法器及辅助电路实现?简述理由。
(4) 计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?