implement parser support for '*' operands, as in "call *%eax".

llvm-svn: 73876
This commit is contained in:
Chris Lattner 2009-06-22 06:02:13 +00:00
parent 78db36271c
commit a7b51ed5e6
1 changed files with 13 additions and 6 deletions

View File

@ -108,7 +108,7 @@ bool AsmParser::ParseX86Operand(X86Operand &Op) {
// FIXME: Decode reg #.
// FIXME: if a segment register, this could either be just the seg reg, or
// the start of a memory operand.
Op = X86Operand::CreateReg(0);
Op = X86Operand::CreateReg(123);
Lexer.Lex(); // Eat register.
return false;
case asmtok::Dollar: {
@ -119,12 +119,19 @@ bool AsmParser::ParseX86Operand(X86Operand &Op) {
return TokError("expected integer constant");
Op = X86Operand::CreateReg(Val);
return false;
case asmtok::Star:
Lexer.Lex(); // Eat the star.
if (Lexer.is(asmtok::Register)) {
Op = X86Operand::CreateReg(123);
Lexer.Lex(); // Eat register.
} else if (ParseX86MemOperand(Op))
return true;
// FIXME: Note that these are 'dereferenced' so that clients know the '*' is
// there.
return false;
}
//case asmtok::Star:
// * %eax
// * <memaddress>
// Note that these are both "dereferenced".
}
}