diff options
Diffstat (limited to 'src/cmd/6g/gobj.c')
-rw-r--r-- | src/cmd/6g/gobj.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/cmd/6g/gobj.c b/src/cmd/6g/gobj.c index e4f0a550d..337cbb956 100644 --- a/src/cmd/6g/gobj.c +++ b/src/cmd/6g/gobj.c @@ -485,6 +485,35 @@ datagostring(Strlit *sval, Addr *a) text(); } +void +gdata(Node *nam, Node *nr, int wid) +{ + Prog *p; + + p = gins(ADATA, nam, nr); + p->from.scale = wid; +} + +void +gdatastring(Node *nam, Strlit *sval) +{ + Prog *p; + Node nod1; + + p = gins(ADATA, nam, N); + datastring(sval->s, sval->len, &p->to); + p->from.scale = types[tptr]->width; + p->to.index = p->to.type; + p->to.type = D_ADDR; +//print("%P\n", p); + + nodconst(&nod1, types[TINT32], sval->len); + p = gins(ADATA, nam, &nod1); + p->from.scale = types[TINT32]->width; + p->from.offset += types[tptr]->width; +} + + int dstringptr(Sym *s, int off, char *str) { |