假设变量x和ptr的类型声明如下:
src_type x;
dst_type *ptr;
这里,src_type和dst_type是用typedef声明的数据类型。有以下一个C语言赋值语句:
*ptr=(dst_type)x;
若x存储在寄存器EAX或AX或AL中,ptr存储在寄存器EDX中,则对于下表中给岀的src_type和dst_type的类型组合,写出实现上述赋值语句的机器级代码。要求用AT&T格式汇编指令表示机器级代码。
表3.1 题3用表1
src_type
dst_type
机器级表示
char
int
int
char
int
unsigned
short
int
unsignedchar
unsigned
char
unsigned
int
int
src_type x;
dst_type *ptr;
这里,src_type和dst_type是用typedef声明的数据类型。有以下一个C语言赋值语句:
*ptr=(dst_type)x;
若x存储在寄存器EAX或AX或AL中,ptr存储在寄存器EDX中,则对于下表中给岀的src_type和dst_type的类型组合,写出实现上述赋值语句的机器级代码。要求用AT&T格式汇编指令表示机器级代码。
表3.1 题3用表1
src_type
dst_type
机器级表示
char
int
int
char
int
unsigned
short
int
unsignedchar
unsigned
char
unsigned
int
int
举一反三
- 假定编译器规定int和short类型长度分别为32位和16位,执行下列C语言语句: unsigned short x=65530; unsigned int y=x; 得到y的机器数为()。
- 在C语言中,不同类型数据混合运算时,要先转换成同一类型后进行运算。设一表达式中包含有int、long、unsigned和char类型的变量和数据这四种类型数据的转换规律是⑵()。 A: int→unsigned→long→char B: char→int→long→unsigned C: char→int→unsigned→long D: char→unsigned→long→int
- 常用的算术运算指令有( )。 A: INC dst B: CMP src , dst C: ADD src , dst D: DEC dst
- 表达式中各运算量不能自动从一种类型转换为另一种类型的是( )。 A: char转换为int B: short转换为int C: unsigned char转换为unsigned int D: unsigned char转换为unsigned short
- 假设某表达式中包含int、long、unsigned、char类型的数据,则表达式最后的运算结果是( )类型。 A: int B: long C: unsigned D: char