Mercurial > projects > dil
changeset 417:8af5c7e2f722
Fixed parsing asm FS register.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Thu, 27 Sep 2007 13:59:36 +0200 |
parents | a4783b904fba |
children | 7354f15cd5e9 |
files | trunk/src/dil/Expressions.d trunk/src/dil/Parser.d |
diffstat | 2 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/dil/Expressions.d Thu Sep 27 11:24:53 2007 +0200 +++ b/trunk/src/dil/Expressions.d Thu Sep 27 13:59:36 2007 +0200 @@ -988,7 +988,7 @@ class AsmRegisterExpression : Expression { Token* register; - Token* number; // ST(0) - ST(7) + Token* number; // ST(0) - ST(7) or FS:0, FS:4, FS:8 this(Token* register, Token* number = null) { mixin(set_kind);
--- a/trunk/src/dil/Parser.d Thu Sep 27 11:24:53 2007 +0200 +++ b/trunk/src/dil/Parser.d Thu Sep 27 13:59:36 2007 +0200 @@ -2929,6 +2929,27 @@ } e = new AsmRegisterExpression(register, number); break; + case "FS": + auto register = token; + nT(); + // TODO: is the colon-number part optional? + Token* number; + if (token.type == T.Colon) + { + // :0, :4, :8 + nT(); + switch (token.srcText) + { + case "0", "4", "8": + number = token; + nT(); + break; + default: + error(MID.ExpectedButFound, "0, 4 or 8", token.srcText); + } + } + e = new AsmRegisterExpression(register, number); + break; case "AL", "AH", "AX", "EAX", "BL", "BH", "BX", "EBX", "CL", "CH", "CX", "ECX", @@ -2937,7 +2958,7 @@ "SP", "ESP", "DI", "EDI", "SI", "ESI", - "ES", "CS", "SS", "DS", "GS", "FS", + "ES", "CS", "SS", "DS", "GS", "CR0", "CR2", "CR3", "CR4", "DR0", "DR1", "DR2", "DR3", "DR6", "DR7", "TR3", "TR4", "TR5", "TR6", "TR7",