X-Git-Url: https://jxself.org/git/?p=zilutils.git;a=blobdiff_plain;f=zilasm%2Flabels.c;fp=zilasm%2Flabels.c;h=22715f6e337d3f87f0f5b1da4e0ca31acc7a401e;hp=0000000000000000000000000000000000000000;hb=fd453701e368225dd15e9df2e5b1752aebe454e8;hpb=093225c7cb864aaa31567969301eb5f36bd9a5f4 diff --git a/zilasm/labels.c b/zilasm/labels.c new file mode 100644 index 0000000..22715f6 --- /dev/null +++ b/zilasm/labels.c @@ -0,0 +1,43 @@ +/* + * labels.c -- part of ZilUtils/ZilAsm + * + * Copyright (C) 2016 Jason Self + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + */ + +#include + +#include "labels.h" + +Symtable *Global_labels; +Symtable *Local_labels; + +const unsigned MAX_GLOBAL_LABELS = 1024; +const unsigned MAX_LOCAL_LABELS = 256; +const unsigned MAX_LABEL_LEN = 32; +const unsigned ADDRESS_SIZE = sizeof(long long); /* TODO!!! */ + +void init_local_labels(void) +{ + if (Local_labels) + symtable_destroy(Local_labels); + Local_labels = symtable_create(MAX_LOCAL_LABELS, MAX_LABEL_LEN, ADDRESS_SIZE); +} + +void init_global_labels(void) +{ + assert(Global_labels); + Global_labels = symtable_create(MAX_GLOBAL_LABELS, MAX_LABEL_LEN, ADDRESS_SIZE); +}