考虑下面的C语言代码:
int test (data_t a) { return a TEST 0; }
它给出了参数a和0之间比较的一般形式,这里,我们可以用typedef来声明data_t,从而设置参数的数据类型,用# define来声明TEST,从而设置比较的类型。对于下面每个指令序列,确定哪种数据类型data_t和比较TEST会导致编译器产生这样的代码。(可能有多个正确答案,请列出所有的正确答案。)
A. testq %rdi, %rdi
setge %al
B. testw %di, %di
sete %al
c.testb %dil, %dil
seta %al
D. testl %edi, %edi
setne %al