mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-03-19 18:00:23 +08:00
Use the new hash table function library to store labels
Use the new hash table function library to store labels. When compiling on my 64-bit system, it reduces the assembly time for the output of test/perf/label.pl from 73 to 7 seconds.
This commit is contained in:
parent
cde08292d6
commit
6244f4b5b9
@ -51,7 +51,8 @@ X = @EXEEXT@
|
||||
$(NROFF) -man $< > $@
|
||||
|
||||
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) assemble.$(O) \
|
||||
labels.$(O) parser.$(O) outform.$(O) output/outbin.$(O) \
|
||||
labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
|
||||
outform.$(O) output/outbin.$(O) \
|
||||
output/outaout.$(O) output/outcoff.$(O) \
|
||||
output/outelf32.$(O) output/outelf64.$(O) \
|
||||
output/outobj.$(O) output/outas86.$(O) output/outrdf2.$(O) \
|
||||
@ -208,15 +209,19 @@ alldeps: perlreq
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(O): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c insnsi.h assemble.h
|
||||
crc64.$(O): crc64.c
|
||||
disasm.$(O): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(O): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
float.$(O): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(O): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h nasm.h \
|
||||
insnsi.h
|
||||
insnsa.$(O): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(O): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(O): insnsn.c
|
||||
labels.$(O): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(O): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(O): listing.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h \
|
||||
listing.h
|
||||
macros.$(O): macros.c
|
||||
|
@ -175,15 +175,19 @@ clean:
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -135,15 +135,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -64,15 +64,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -159,15 +159,19 @@ sync.o: sync.c sync.h
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.o: assemble.c preproc.h insns.h pptok.h regs.h regflags.c config.h \
|
||||
version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.o: crc64.c
|
||||
disasm.o: disasm.c insns.h sync.h regdis.c regs.h config.h regs.c version.h \
|
||||
nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.o: eval.c labels.h eval.h regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
float.o: float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.o: hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h nasm.h \
|
||||
insnsi.h
|
||||
insnsa.o: insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.o: insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.o: insnsn.c
|
||||
labels.o: labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.o: labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.o: listing.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h \
|
||||
listing.h
|
||||
macros.o: macros.c
|
||||
|
@ -88,15 +88,19 @@ clean:
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.o: assemble.c preproc.h insns.h pptok.h regs.h regflags.c config.h \
|
||||
version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.o: crc64.c
|
||||
disasm.o: disasm.c insns.h sync.h regdis.c regs.h config.h regs.c version.h \
|
||||
nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.o: eval.c labels.h eval.h regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
float.o: float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.o: hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h nasm.h \
|
||||
insnsi.h
|
||||
insnsa.o: insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.o: insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.o: insnsn.c
|
||||
labels.o: labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.o: labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.o: listing.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h \
|
||||
listing.h
|
||||
macros.o: macros.c
|
||||
|
@ -95,15 +95,19 @@ clean:
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.o: assemble.c preproc.h insns.h pptok.h regs.h regflags.c config.h \
|
||||
version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.o: crc64.c
|
||||
disasm.o: disasm.c insns.h sync.h regdis.c regs.h config.h regs.c version.h \
|
||||
nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.o: eval.c labels.h eval.h regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
float.o: float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.o: hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h nasm.h \
|
||||
insnsi.h
|
||||
insnsa.o: insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.o: insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.o: insnsn.c
|
||||
labels.o: labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.o: labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.o: listing.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h \
|
||||
listing.h
|
||||
macros.o: macros.c
|
||||
|
@ -49,15 +49,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -62,15 +62,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -144,15 +144,19 @@ install_everything: everything install install_doc install_rdf
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.o: assemble.c preproc.h insns.h pptok.h regs.h regflags.c config.h \
|
||||
version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.o: crc64.c
|
||||
disasm.o: disasm.c insns.h sync.h regdis.c regs.h config.h regs.c version.h \
|
||||
nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.o: eval.c labels.h eval.h regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
float.o: float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.o: hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h nasm.h \
|
||||
insnsi.h
|
||||
insnsa.o: insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.o: insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.o: insnsn.c
|
||||
labels.o: labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.o: labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.o: listing.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h \
|
||||
listing.h
|
||||
macros.o: macros.c
|
||||
|
@ -115,15 +115,19 @@ clean:
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.${OBJ}: assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.${OBJ}: crc64.c
|
||||
disasm.${OBJ}: disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.${OBJ}: eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.${OBJ}: float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.${OBJ}: hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.${OBJ}: insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.${OBJ}: insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.${OBJ}: insnsn.c
|
||||
labels.${OBJ}: labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.${OBJ}: labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.${OBJ}: listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.${OBJ}: macros.c
|
||||
|
@ -158,15 +158,19 @@ spotless: clean
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -109,15 +109,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -91,15 +91,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -88,15 +88,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -115,15 +115,19 @@ rdf_install install_rdf:
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.o: assemble.c preproc.h insns.h pptok.h regs.h regflags.c config.h \
|
||||
version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.o: crc64.c
|
||||
disasm.o: disasm.c insns.h sync.h regdis.c regs.h config.h regs.c version.h \
|
||||
nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.o: eval.c labels.h eval.h regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
float.o: float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.o: hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h nasm.h \
|
||||
insnsi.h
|
||||
insnsa.o: insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.o: insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.o: insnsn.c
|
||||
labels.o: labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.o: labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.o: listing.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h \
|
||||
listing.h
|
||||
macros.o: macros.c
|
||||
|
@ -103,15 +103,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -105,15 +105,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -90,15 +90,19 @@ clean : .SYMBOLIC
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
@ -105,15 +105,19 @@ clean :
|
||||
#-- Everything below is generated by mkdep.pl - do not edit --#
|
||||
assemble.$(OBJ): assemble.c preproc.h insns.h pptok.h regs.h regflags.c \
|
||||
config.h version.h nasmlib.h nasm.h regvals.c assemble.h insnsi.h
|
||||
crc64.$(OBJ): crc64.c
|
||||
disasm.$(OBJ): disasm.c insns.h sync.h regdis.c regs.h config.h regs.c \
|
||||
version.h nasm.h insnsn.c names.c insnsi.h disasm.h
|
||||
eval.$(OBJ): eval.c labels.h eval.h regs.h config.h version.h nasmlib.h \
|
||||
nasm.h insnsi.h
|
||||
float.$(OBJ): float.c regs.h config.h version.h nasm.h insnsi.h
|
||||
hashtbl.$(OBJ): hashtbl.c regs.h config.h version.h nasmlib.h hashtbl.h \
|
||||
nasm.h insnsi.h
|
||||
insnsa.$(OBJ): insnsa.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsd.$(OBJ): insnsd.c insns.h regs.h config.h version.h nasm.h insnsi.h
|
||||
insnsn.$(OBJ): insnsn.c
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h nasmlib.h nasm.h insnsi.h
|
||||
labels.$(OBJ): labels.c regs.h config.h version.h hashtbl.h nasmlib.h nasm.h \
|
||||
insnsi.h
|
||||
listing.$(OBJ): listing.c regs.h config.h version.h nasmlib.h nasm.h \
|
||||
insnsi.h listing.h
|
||||
macros.$(OBJ): macros.c
|
||||
|
128
labels.c
128
labels.c
@ -13,6 +13,7 @@
|
||||
|
||||
#include "nasm.h"
|
||||
#include "nasmlib.h"
|
||||
#include "hashtbl.h"
|
||||
|
||||
/*
|
||||
* A local label is one that begins with exactly one period. Things
|
||||
@ -31,9 +32,8 @@
|
||||
((c) == '.' || (c) == '@') : \
|
||||
((c) == '.'))
|
||||
|
||||
#define LABEL_BLOCK 32 /* no. of labels/block */
|
||||
#define LABEL_BLOCK 128 /* no. of labels/block */
|
||||
#define LBLK_SIZE (LABEL_BLOCK*sizeof(union label))
|
||||
#define LABEL_HASHES 37 /* no. of hash table entries */
|
||||
|
||||
#define END_LIST -3 /* don't clash with NO_SEG! */
|
||||
#define END_BLOCK -2
|
||||
@ -75,8 +75,9 @@ struct permts { /* permanent text storage */
|
||||
|
||||
extern int global_offset_changed; /* defined in nasm.c */
|
||||
|
||||
static union label *ltab[LABEL_HASHES]; /* using a hash table */
|
||||
static union label *lfree[LABEL_HASHES]; /* pointer into the above */
|
||||
static struct hash_table *ltab; /* labels hash table */
|
||||
static union label *ldata; /* all label data blocks */
|
||||
static union label *lfree; /* labels free block */
|
||||
static struct permts *perm_head; /* start of perm. text storage */
|
||||
static struct permts *perm_tail; /* end of perm. text storage */
|
||||
|
||||
@ -97,53 +98,50 @@ char lpostfix[PREFIX_MAX] = { 0 };
|
||||
*/
|
||||
static union label *find_label(char *label, int create)
|
||||
{
|
||||
int hash = 0;
|
||||
char *p, *prev;
|
||||
int prevlen;
|
||||
char *prev;
|
||||
int prevlen, len;
|
||||
union label *lptr;
|
||||
char label_str[IDLEN_MAX];
|
||||
struct hash_insert ip;
|
||||
|
||||
if (islocal(label))
|
||||
if (islocal(label)) {
|
||||
prev = prevlabel;
|
||||
else
|
||||
prevlen = strlen(prev);
|
||||
len = strlen(label);
|
||||
if (prevlen+len >= IDLEN_MAX)
|
||||
return NULL; /* Error... */
|
||||
memcpy(label_str, prev, prevlen);
|
||||
memcpy(label_str+prevlen, label, len);
|
||||
label_str[len += prevlen] = '\0';
|
||||
label = label_str;
|
||||
} else {
|
||||
prev = "";
|
||||
prevlen = strlen(prev);
|
||||
p = prev;
|
||||
while (*p)
|
||||
hash += *p++;
|
||||
p = label;
|
||||
while (*p)
|
||||
hash += *p++;
|
||||
hash %= LABEL_HASHES;
|
||||
lptr = ltab[hash];
|
||||
while (lptr->admin.movingon != END_LIST) {
|
||||
if (lptr->admin.movingon == END_BLOCK) {
|
||||
lptr = lptr->admin.next;
|
||||
if (!lptr)
|
||||
break;
|
||||
}
|
||||
if (!strncmp(lptr->defn.label, prev, prevlen) &&
|
||||
!strcmp(lptr->defn.label + prevlen, label))
|
||||
return lptr;
|
||||
lptr++;
|
||||
prevlen = 0;
|
||||
}
|
||||
if (create) {
|
||||
if (lfree[hash]->admin.movingon == END_BLOCK) {
|
||||
/*
|
||||
* must allocate a new block
|
||||
*/
|
||||
lfree[hash]->admin.next =
|
||||
(union label *)nasm_malloc(LBLK_SIZE);
|
||||
lfree[hash] = lfree[hash]->admin.next;
|
||||
init_block(lfree[hash]);
|
||||
}
|
||||
|
||||
lfree[hash]->admin.movingon = BOGUS_VALUE;
|
||||
lfree[hash]->defn.label = perm_copy(prev, label);
|
||||
lfree[hash]->defn.special = NULL;
|
||||
lfree[hash]->defn.is_global = NOT_DEFINED_YET;
|
||||
return lfree[hash]++;
|
||||
} else
|
||||
return NULL;
|
||||
lptr = hash_find(ltab, label, &ip);
|
||||
|
||||
if (lptr || !create)
|
||||
return lptr;
|
||||
|
||||
/* Create a new label... */
|
||||
if (lfree->admin.movingon == END_BLOCK) {
|
||||
/*
|
||||
* must allocate a new block
|
||||
*/
|
||||
lfree->admin.next =
|
||||
(union label *)nasm_malloc(LBLK_SIZE);
|
||||
lfree = lfree->admin.next;
|
||||
init_block(lfree);
|
||||
}
|
||||
|
||||
lfree->admin.movingon = BOGUS_VALUE;
|
||||
lfree->defn.label = perm_copy(prev, label);
|
||||
lfree->defn.special = NULL;
|
||||
lfree->defn.is_global = NOT_DEFINED_YET;
|
||||
|
||||
hash_add(&ip, lfree->defn.label, lfree);
|
||||
return lfree++;
|
||||
}
|
||||
|
||||
int lookup_label(char *label, int32_t *segment, int32_t *offset)
|
||||
@ -372,22 +370,14 @@ void declare_as_global(char *label, char *special, efunc error)
|
||||
|
||||
int init_labels(void)
|
||||
{
|
||||
int i;
|
||||
ltab = hash_init();
|
||||
|
||||
for (i = 0; i < LABEL_HASHES; i++) {
|
||||
ltab[i] = (union label *)nasm_malloc(LBLK_SIZE);
|
||||
if (!ltab[i])
|
||||
return -1; /* can't initialise, panic */
|
||||
init_block(ltab[i]);
|
||||
lfree[i] = ltab[i];
|
||||
}
|
||||
ldata = lfree = (union label *)nasm_malloc(LBLK_SIZE);
|
||||
init_block(lfree);
|
||||
|
||||
perm_head =
|
||||
perm_tail = (struct permts *)nasm_malloc(sizeof(struct permts));
|
||||
|
||||
if (!perm_head)
|
||||
return -1;
|
||||
|
||||
perm_head->next = NULL;
|
||||
perm_head->size = PERMTS_SIZE;
|
||||
perm_head->usage = 0;
|
||||
@ -399,24 +389,28 @@ int init_labels(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cleanup_hashed_label(char *key, void *data)
|
||||
{
|
||||
/* The key is part of the permanent string storage */
|
||||
/* The data is part of the ldata chain */
|
||||
(void)key; (void)data;
|
||||
}
|
||||
|
||||
void cleanup_labels(void)
|
||||
{
|
||||
int i;
|
||||
union label *lptr, *lhold;
|
||||
|
||||
initialized = FALSE;
|
||||
|
||||
for (i = 0; i < LABEL_HASHES; i++) {
|
||||
union label *lptr, *lhold;
|
||||
hash_free(ltab, cleanup_hashed_label);
|
||||
|
||||
lptr = lhold = ltab[i];
|
||||
|
||||
while (lptr) {
|
||||
while (lptr->admin.movingon != END_BLOCK)
|
||||
lptr++;
|
||||
lptr = lptr->admin.next;
|
||||
nasm_free(lhold);
|
||||
lhold = lptr;
|
||||
}
|
||||
lptr = lhold = ldata;
|
||||
while (lptr) {
|
||||
lptr = &lptr[LABEL_BLOCK-1];
|
||||
lptr = lptr->admin.next;
|
||||
nasm_free(lhold);
|
||||
lhold = lptr;
|
||||
}
|
||||
|
||||
while (perm_head) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user