3考虑下列的C语言代码:
int comp(data_t a, data—t b) { return a COMP b; }
它给出了参数a和b之间比较的一般形式,这里,参数的数据类型data_t(通过 typedef)被声明为表3-1中列出的某种整数类型,可以是有符号的也可以是无符号的comp通过#define来定义。
假设a在%rdi中某个部分,bS%rsi中某个部分。对于下面每个指令序列,确定哪种数据类型data_t和比较COMP会导致编译器产生这样的代码。(可能有多个正 确答案,请列出所有的正确答案。)
A.cmpl %esi,%edi
setl %al
B.cmpw %si,%di
setge %al
C.cmpb %sil,%dil
setbe %al
D.cmpq %rsi,%rdi
setne %a