X-Git-Url: https://jxself.org/git/?p=zilutils.git;a=blobdiff_plain;f=zilasm%2Flabels.cpp;fp=zilasm%2Flabels.cpp;h=c8f97f9536c5897afb19628ea1463c62b1cefac0;hp=0000000000000000000000000000000000000000;hb=82b0f84ab797141758929d16894d42e12ef79af7;hpb=37d32bd49e745a5c1686b6495f60172b24222361 diff --git a/zilasm/labels.cpp b/zilasm/labels.cpp new file mode 100644 index 0000000..c8f97f9 --- /dev/null +++ b/zilasm/labels.cpp @@ -0,0 +1,49 @@ +/* + * labels.c -- part of ZilUtils/ZilAsm + * + * Copyright (C) 2016, 2019 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 + * + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +#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); +}