aboutsummaryrefslogtreecommitdiff
path: root/i386-asm.c
diff options
context:
space:
mode:
authorJoe Soroka <gits@joesoroka.com>2011-02-01 15:53:48 -0800
committerJoe Soroka <gits@joesoroka.com>2011-02-01 15:53:48 -0800
commit0d9376da70d984c2a6d60838ec07075a3e6504e3 (patch)
tree65c317c4875855acefa226957efe1f4c6c9acbd4 /i386-asm.c
parent47b4cf22cda4f46b2e2be031260618fd0b07d70a (diff)
downloadtinycc-0d9376da70d984c2a6d60838ec07075a3e6504e3.tar.gz
tinycc-0d9376da70d984c2a6d60838ec07075a3e6504e3.tar.bz2
tccasm: accept bracketed offset expressions
Diffstat (limited to 'i386-asm.c')
-rw-r--r--i386-asm.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/i386-asm.c b/i386-asm.c
index 2623ef6..4d2f9b8 100644
--- a/i386-asm.c
+++ b/i386-asm.c
@@ -376,8 +376,20 @@ static void parse_operand(TCCState *s1, Operand *op)
op->e.v = e.v;
op->e.sym = e.sym;
} else {
- op->e.v = 0;
- op->e.sym = NULL;
+ next();
+ if (tok == '%') {
+ unget_tok('(');
+ op->e.v = 0;
+ op->e.sym = NULL;
+ } else {
+ /* bracketed offset expression */
+ asm_expr(s1, &e);
+ if (tok != ')')
+ expect(")");
+ next();
+ op->e.v = e.v;
+ op->e.sym = e.sym;
+ }
}
if (tok == '(') {
next();