首页 > 试题广场 >

假设变量sp和dp被声明为类型 src_t *sp; de

[问答题]

假设变量sp和dp被声明为类型

src_t *sp;
dest_t *dp;

这里src_t和dest_t是用typedef声明的数据类型。我们想使用适当的数据传送指令来实现下面的操作

*dp=(dest_t) *sp;

假设sp和dp的值分别存储在寄存器社%rdi和%rsi中。对于表中的每个表项,给出实现指定数据传送的两条指令。其中第一条指令应该从内存中读数,做适当的转换,并设置寄存器%rax的适当部分。然后,第二条指令要把%rax的适当部分写到内存。在这 两种情况中,寄存器的部分可以是%rax、%eax、%ax或%al,两者可以互不相同。

记住,当执行强制类型转换既涉及大小变化又涉及C语言中符号变化时,操作应该先改变大小。

src_t

dest—t

指令

long

long

movq(%rdi),%rax
movq %rax,(%rsi)

char

int

 

char

unsigned

 

unsigned char

long

 

int

char

 

unsigned

unsigned char

 

char

short


这道题你会答吗?花几分钟告诉大家答案吧!