mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-02-17 17:19:35 +08:00
Use a phash to decode directives
We can use a perfect hash to decode directives as well. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
852f1eeed5
commit
323fcff32b
2
.gitignore
vendored
2
.gitignore
vendored
@ -18,6 +18,8 @@
|
||||
/config.log
|
||||
/config.status
|
||||
/configure
|
||||
/directives.c
|
||||
/directives.h
|
||||
/doc/*.dip
|
||||
/doc/*.hpj
|
||||
/doc/*.pdf
|
||||
|
19
Makefile.in
19
Makefile.in
@ -62,6 +62,7 @@ X = @EXEEXT@
|
||||
NASM = nasm.$(O) nasmlib.$(O) ver.$(O) \
|
||||
raa.$(O) saa.$(O) rbtree.$(O) \
|
||||
float.$(O) insnsa.$(O) insnsb.$(O) \
|
||||
directives.$(O) \
|
||||
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
|
||||
output/outform.$(O) output/outlib.$(O) output/nulldbg.$(O) \
|
||||
output/outbin.$(O) output/outaout.$(O) output/outcoff.$(O) \
|
||||
@ -155,11 +156,18 @@ pptok.c: pptok.dat pptok.pl perllib/phash.ph
|
||||
pptok.ph: pptok.dat pptok.pl perllib/phash.ph
|
||||
$(PERL) $(srcdir)/pptok.pl ph $(srcdir)/pptok.dat pptok.ph
|
||||
|
||||
# Directives hash
|
||||
directives.h: directives.dat directives.pl perllib/phash.ph
|
||||
$(PERL) $(srcdir)/directives.pl h $(srcdir)/directives.dat directives.h
|
||||
directives.c: directives.dat directives.pl perllib/phash.ph
|
||||
$(PERL) $(srcdir)/directives.pl c $(srcdir)/directives.dat directives.c
|
||||
|
||||
# This target generates all files that require perl.
|
||||
# This allows easier generation of distribution (see dist target).
|
||||
PERLREQ = macros.c insnsb.c insnsa.c insnsd.c insnsi.h insnsn.c \
|
||||
regs.c regs.h regflags.c regdis.c regdis.h regvals.c \
|
||||
tokhash.c tokens.h pptok.h pptok.c pptok.ph \
|
||||
directives.c directives.h \
|
||||
version.h version.mac version.mak version.nsh
|
||||
perlreq: $(PERLREQ)
|
||||
|
||||
@ -247,6 +255,8 @@ alldeps: perlreq
|
||||
assemble.$(O): assemble.c assemble.h compiler.h config.h insns.h insnsi.h \
|
||||
nasm.h nasmlib.h pptok.h preproc.h regs.h tables.h tokens.h
|
||||
crc64.$(O): crc64.c compiler.h config.h nasmlib.h
|
||||
directives.$(O): directives.c compiler.h config.h directives.h hashtbl.h \
|
||||
insnsi.h nasm.h nasmlib.h pptok.h preproc.h regs.h
|
||||
disasm.$(O): disasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h pptok.h preproc.h regdis.h regs.h sync.h tables.h tokens.h
|
||||
eval.$(O): eval.c compiler.h config.h eval.h float.h insnsi.h labels.h \
|
||||
@ -272,9 +282,9 @@ listing.$(O): listing.c compiler.h config.h insnsi.h listing.h nasm.h \
|
||||
nasmlib.h pptok.h preproc.h regs.h
|
||||
macros.$(O): macros.c compiler.h config.h hashtbl.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h pptok.h preproc.h regs.h tables.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h config.h eval.h float.h insns.h \
|
||||
insnsi.h labels.h listing.h nasm.h nasmlib.h output/outform.h parser.h \
|
||||
pptok.h preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h config.h directives.h eval.h float.h \
|
||||
insns.h insnsi.h labels.h listing.h nasm.h nasmlib.h output/outform.h \
|
||||
parser.h pptok.h preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasmlib.$(O): nasmlib.c compiler.h config.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h pptok.h preproc.h regs.h tokens.h
|
||||
ndisasm.$(O): ndisasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h \
|
||||
@ -306,6 +316,8 @@ output/outelf64.$(O): output/outelf64.c compiler.h config.h insnsi.h nasm.h \
|
||||
nasmlib.h output/dwarf.h output/elf64.h output/elfcommon.h output/outelf.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h raa.h rbtree.h regs.h \
|
||||
saa.h stdscan.h
|
||||
output/outexe.$(O): output/outexe.c compiler.h config.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h pptok.h preproc.h regs.h
|
||||
output/outform.$(O): output/outform.c compiler.h config.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h pptok.h preproc.h regs.h
|
||||
output/outieee.$(O): output/outieee.c compiler.h config.h insnsi.h nasm.h \
|
||||
@ -326,7 +338,6 @@ output/outrdf.$(O): output/outrdf.c compiler.h config.h insnsi.h nasm.h \
|
||||
output/outrdf2.$(O): output/outrdf2.c compiler.h config.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h output/outlib.h pptok.h preproc.h rdoff/rdoff.h \
|
||||
regs.h saa.h
|
||||
owtest.$(O): owtest.c
|
||||
parser.$(O): parser.c compiler.h config.h float.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h parser.h pptok.h preproc.h regs.h stdscan.h tables.h tokens.h
|
||||
pptok.$(O): pptok.c compiler.h config.h hashtbl.h nasmlib.h pptok.h \
|
||||
|
@ -37,15 +37,16 @@ X = .exe
|
||||
NASM = nasm.$(O) nasmlib.$(O) ver.$(O) \
|
||||
raa.$(O) saa.$(O) rbtree.$(O) \
|
||||
float.$(O) insnsa.$(O) insnsb.$(O) \
|
||||
directives.$(O) \
|
||||
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
|
||||
output/outform.$(O) output/outlib.$(O) output/nulldbg.$(O) \
|
||||
output/outbin.$(O) output/outaout.$(O) output/outcoff.$(O) \
|
||||
output/outelf.$(O) output/outelf32.$(O) output/outelf64.$(O) \
|
||||
output/outobj.$(O) output/outas86.$(O) output/outrdf2.$(O) \
|
||||
output/outdbg.$(O) output/outieee.$(O) output/outmacho.$(O) \
|
||||
preproc.$(O) quote.$(O) pptok.$(O) macros.$(O) \
|
||||
listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) strfunc.$(O) \
|
||||
tokhash.$(O) regvals.$(O) regflags.$(O)
|
||||
output/outdbg.$(O) output/outieee.$(O) output/outmacho32.$(O) \
|
||||
output/outmacho64.$(O) preproc.$(O) quote.$(O) pptok.$(O) \
|
||||
macros.$(O) listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) \
|
||||
strfunc.$(O) tokhash.$(O) regvals.$(O) regflags.$(O)
|
||||
|
||||
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) ver.$(O) \
|
||||
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
|
||||
@ -185,6 +186,8 @@ everything: all doc rdf
|
||||
assemble.$(O): assemble.c assemble.h compiler.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h pptok.h preproc.h regs.h tables.h tokens.h
|
||||
crc64.$(O): crc64.c compiler.h nasmlib.h
|
||||
directives.$(O): directives.c compiler.h directives.h hashtbl.h insnsi.h \
|
||||
nasm.h nasmlib.h pptok.h preproc.h regs.h
|
||||
disasm.$(O): disasm.c compiler.h disasm.h insns.h insnsi.h nasm.h nasmlib.h \
|
||||
pptok.h preproc.h regdis.h regs.h sync.h tables.h tokens.h
|
||||
eval.$(O): eval.c compiler.h eval.h float.h insnsi.h labels.h nasm.h \
|
||||
@ -210,9 +213,9 @@ listing.$(O): listing.c compiler.h insnsi.h listing.h nasm.h nasmlib.h \
|
||||
pptok.h preproc.h regs.h
|
||||
macros.$(O): macros.c compiler.h hashtbl.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h pptok.h preproc.h regs.h tables.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h eval.h float.h insns.h insnsi.h \
|
||||
labels.h listing.h nasm.h nasmlib.h output/outform.h parser.h pptok.h \
|
||||
preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h directives.h eval.h float.h insns.h \
|
||||
insnsi.h labels.h listing.h nasm.h nasmlib.h output/outform.h parser.h \
|
||||
pptok.h preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasmlib.$(O): nasmlib.c compiler.h insns.h insnsi.h nasm.h nasmlib.h pptok.h \
|
||||
preproc.h regs.h tokens.h
|
||||
ndisasm.$(O): ndisasm.c compiler.h disasm.h insns.h insnsi.h nasm.h \
|
||||
@ -242,14 +245,20 @@ output/outelf64.$(O): output/outelf64.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/dwarf.h output/elf64.h output/elfcommon.h output/outelf.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h raa.h rbtree.h regs.h \
|
||||
saa.h stdscan.h
|
||||
output/outexe.$(O): output/outexe.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h pptok.h preproc.h regs.h
|
||||
output/outform.$(O): output/outform.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h pptok.h preproc.h regs.h
|
||||
output/outieee.$(O): output/outieee.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h regs.h
|
||||
output/outlib.$(O): output/outlib.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outlib.h pptok.h preproc.h regs.h
|
||||
output/outmacho.$(O): output/outmacho.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h raa.h regs.h saa.h
|
||||
output/outmacho32.$(O): output/outmacho32.c compiler.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h output/outlib.h pptok.h preproc.h raa.h regs.h \
|
||||
saa.h
|
||||
output/outmacho64.$(O): output/outmacho64.c compiler.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h output/outlib.h pptok.h preproc.h raa.h regs.h \
|
||||
saa.h
|
||||
output/outobj.$(O): output/outobj.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h regs.h stdscan.h
|
||||
output/outrdf.$(O): output/outrdf.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
@ -257,7 +266,6 @@ output/outrdf.$(O): output/outrdf.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outrdf2.$(O): output/outrdf2.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h rdoff/rdoff.h regs.h \
|
||||
saa.h
|
||||
owtest.$(O): owtest.c
|
||||
parser.$(O): parser.c compiler.h float.h insns.h insnsi.h nasm.h nasmlib.h \
|
||||
parser.h pptok.h preproc.h regs.h stdscan.h tables.h tokens.h
|
||||
pptok.$(O): pptok.c compiler.h hashtbl.h nasmlib.h pptok.h preproc.h
|
||||
|
@ -33,15 +33,16 @@ O = o
|
||||
NASM = nasm.o nasmlib.o ver.o \
|
||||
raa.o saa.o rbtree.o \
|
||||
float.o insnsa.o insnsb.o \
|
||||
directives.o \
|
||||
assemble.o labels.o hashtbl.o crc64.o parser.o \
|
||||
outform.o outlib.o nulldbg.o \
|
||||
outbin.o outaout.o outcoff.o \
|
||||
outelf.o outelf32.o outelf64.o \
|
||||
outobj.o outas86.o outrdf2.o \
|
||||
outdbg.o outieee.o outmacho.o \
|
||||
preproc.o quote.o pptok.o macros.o \
|
||||
listing.o eval.o exprlib.o stdscan.o strfunc.o \
|
||||
tokhash.o regvals.o regflags.o
|
||||
outdbg.o outieee.o outmacho32.o \
|
||||
outmacho64.o preproc.o quote.o pptok.o \
|
||||
macros.o listing.o eval.o exprlib.o stdscan.o \
|
||||
strfunc.o tokhash.o regvals.o regflags.o
|
||||
|
||||
NDISASM = ndisasm.o disasm.o sync.o nasmlib.o ver.o \
|
||||
insnsd.o insnsb.o insnsn.o regs.o regdis.o
|
||||
@ -125,6 +126,8 @@ $(OBJDIR)/version.mak: $(PROOT)/version $(PROOT)/version.pl $(OBJDIR)
|
||||
assemble.o: assemble.c assemble.h compiler.h config.h insns.h insnsi.h \
|
||||
nasm.h nasmlib.h pptok.h preproc.h regs.h tables.h tokens.h
|
||||
crc64.o: crc64.c compiler.h config.h nasmlib.h
|
||||
directives.o: directives.c compiler.h config.h directives.h hashtbl.h \
|
||||
insnsi.h nasm.h nasmlib.h pptok.h preproc.h regs.h
|
||||
disasm.o: disasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h pptok.h preproc.h regdis.h regs.h sync.h tables.h tokens.h
|
||||
eval.o: eval.c compiler.h config.h eval.h float.h insnsi.h labels.h nasm.h \
|
||||
@ -150,9 +153,9 @@ listing.o: listing.c compiler.h config.h insnsi.h listing.h nasm.h nasmlib.h \
|
||||
pptok.h preproc.h regs.h
|
||||
macros.o: macros.c compiler.h config.h hashtbl.h insnsi.h nasm.h nasmlib.h \
|
||||
outform.h pptok.h preproc.h regs.h tables.h
|
||||
nasm.o: nasm.c assemble.h compiler.h config.h eval.h float.h insns.h \
|
||||
insnsi.h labels.h listing.h nasm.h nasmlib.h outform.h parser.h pptok.h \
|
||||
preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasm.o: nasm.c assemble.h compiler.h config.h directives.h eval.h float.h \
|
||||
insns.h insnsi.h labels.h listing.h nasm.h nasmlib.h outform.h parser.h \
|
||||
pptok.h preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasmlib.o: nasmlib.c compiler.h config.h insns.h insnsi.h nasm.h nasmlib.h \
|
||||
pptok.h preproc.h regs.h tokens.h
|
||||
ndisasm.o: ndisasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h \
|
||||
@ -177,13 +180,17 @@ outelf32.o: outelf32.c compiler.h config.h insnsi.h nasm.h nasmlib.h dwarf.h \
|
||||
outelf64.o: outelf64.c compiler.h config.h insnsi.h nasm.h nasmlib.h dwarf.h \
|
||||
elf64.h elfcommon.h outelf.h outform.h outlib.h pptok.h preproc.h raa.h \
|
||||
rbtree.h regs.h saa.h stdscan.h
|
||||
outexe.o: outexe.c compiler.h config.h insnsi.h nasm.h nasmlib.h outform.h \
|
||||
pptok.h preproc.h regs.h
|
||||
outform.o: outform.c compiler.h config.h insnsi.h nasm.h nasmlib.h outform.h \
|
||||
pptok.h preproc.h regs.h
|
||||
outieee.o: outieee.c compiler.h config.h insnsi.h nasm.h nasmlib.h outform.h \
|
||||
outlib.h pptok.h preproc.h regs.h
|
||||
outlib.o: outlib.c compiler.h config.h insnsi.h nasm.h nasmlib.h outlib.h \
|
||||
pptok.h preproc.h regs.h
|
||||
outmacho.o: outmacho.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
|
||||
outmacho32.o: outmacho32.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
|
||||
outform.h outlib.h pptok.h preproc.h raa.h regs.h saa.h
|
||||
outmacho64.o: outmacho64.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
|
||||
outform.h outlib.h pptok.h preproc.h raa.h regs.h saa.h
|
||||
outobj.o: outobj.c compiler.h config.h insnsi.h nasm.h nasmlib.h outform.h \
|
||||
outlib.h pptok.h preproc.h regs.h stdscan.h
|
||||
@ -191,7 +198,6 @@ outrdf.o: outrdf.c compiler.h config.h insnsi.h nasm.h nasmlib.h outform.h \
|
||||
pptok.h preproc.h regs.h
|
||||
outrdf2.o: outrdf2.c compiler.h config.h insnsi.h nasm.h nasmlib.h outform.h \
|
||||
outlib.h pptok.h preproc.h rdoff.h regs.h saa.h
|
||||
owtest.o: owtest.c
|
||||
parser.o: parser.c compiler.h config.h float.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h parser.h pptok.h preproc.h regs.h stdscan.h tables.h tokens.h
|
||||
pptok.o: pptok.c compiler.h config.h hashtbl.h nasmlib.h pptok.h preproc.h
|
||||
|
@ -49,15 +49,16 @@ X = .exe
|
||||
NASM = nasm.$(O) nasmlib.$(O) ver.$(O) &
|
||||
raa.$(O) saa.$(O) rbtree.$(O) &
|
||||
float.$(O) insnsa.$(O) insnsb.$(O) &
|
||||
directives.$(O) &
|
||||
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) &
|
||||
output\outform.$(O) output\outlib.$(O) output\nulldbg.$(O) &
|
||||
output\outbin.$(O) output\outaout.$(O) output\outcoff.$(O) &
|
||||
output\outelf.$(O) output\outelf32.$(O) output\outelf64.$(O) &
|
||||
output\outobj.$(O) output\outas86.$(O) output\outrdf2.$(O) &
|
||||
output\outdbg.$(O) output\outieee.$(O) output\outmacho.$(O) &
|
||||
preproc.$(O) quote.$(O) pptok.$(O) macros.$(O) &
|
||||
listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) strfunc.$(O) &
|
||||
tokhash.$(O) regvals.$(O) regflags.$(O)
|
||||
output\outdbg.$(O) output\outieee.$(O) output\outmacho32.$(O) &
|
||||
output\outmacho64.$(O) preproc.$(O) quote.$(O) pptok.$(O) &
|
||||
macros.$(O) listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) &
|
||||
strfunc.$(O) tokhash.$(O) regvals.$(O) regflags.$(O)
|
||||
|
||||
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) ver.$(O) &
|
||||
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
|
||||
@ -214,6 +215,8 @@ everything: all doc rdf
|
||||
assemble.$(O): assemble.c assemble.h compiler.h insns.h insnsi.h nasm.h &
|
||||
nasmlib.h pptok.h preproc.h regs.h tables.h tokens.h
|
||||
crc64.$(O): crc64.c compiler.h nasmlib.h
|
||||
directives.$(O): directives.c compiler.h directives.h hashtbl.h insnsi.h &
|
||||
nasm.h nasmlib.h pptok.h preproc.h regs.h
|
||||
disasm.$(O): disasm.c compiler.h disasm.h insns.h insnsi.h nasm.h nasmlib.h &
|
||||
pptok.h preproc.h regdis.h regs.h sync.h tables.h tokens.h
|
||||
eval.$(O): eval.c compiler.h eval.h float.h insnsi.h labels.h nasm.h &
|
||||
@ -239,9 +242,9 @@ listing.$(O): listing.c compiler.h insnsi.h listing.h nasm.h nasmlib.h &
|
||||
pptok.h preproc.h regs.h
|
||||
macros.$(O): macros.c compiler.h hashtbl.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h pptok.h preproc.h regs.h tables.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h eval.h float.h insns.h insnsi.h &
|
||||
labels.h listing.h nasm.h nasmlib.h output\outform.h parser.h pptok.h &
|
||||
preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h directives.h eval.h float.h insns.h &
|
||||
insnsi.h labels.h listing.h nasm.h nasmlib.h output\outform.h parser.h &
|
||||
pptok.h preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasmlib.$(O): nasmlib.c compiler.h insns.h insnsi.h nasm.h nasmlib.h pptok.h &
|
||||
preproc.h regs.h tokens.h
|
||||
ndisasm.$(O): ndisasm.c compiler.h disasm.h insns.h insnsi.h nasm.h &
|
||||
@ -271,14 +274,20 @@ output\outelf64.$(O): output\outelf64.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\dwarf.h output\elf64.h output\elfcommon.h output\outelf.h &
|
||||
output\outform.h output\outlib.h pptok.h preproc.h raa.h rbtree.h regs.h &
|
||||
saa.h stdscan.h
|
||||
output\outexe.$(O): output\outexe.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h pptok.h preproc.h regs.h
|
||||
output\outform.$(O): output\outform.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h pptok.h preproc.h regs.h
|
||||
output\outieee.$(O): output\outieee.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h output\outlib.h pptok.h preproc.h regs.h
|
||||
output\outlib.$(O): output\outlib.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outlib.h pptok.h preproc.h regs.h
|
||||
output\outmacho.$(O): output\outmacho.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h output\outlib.h pptok.h preproc.h raa.h regs.h saa.h
|
||||
output\outmacho32.$(O): output\outmacho32.c compiler.h insnsi.h nasm.h &
|
||||
nasmlib.h output\outform.h output\outlib.h pptok.h preproc.h raa.h regs.h &
|
||||
saa.h
|
||||
output\outmacho64.$(O): output\outmacho64.c compiler.h insnsi.h nasm.h &
|
||||
nasmlib.h output\outform.h output\outlib.h pptok.h preproc.h raa.h regs.h &
|
||||
saa.h
|
||||
output\outobj.$(O): output\outobj.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h output\outlib.h pptok.h preproc.h regs.h stdscan.h
|
||||
output\outrdf.$(O): output\outrdf.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
@ -286,7 +295,6 @@ output\outrdf.$(O): output\outrdf.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outrdf2.$(O): output\outrdf2.c compiler.h insnsi.h nasm.h nasmlib.h &
|
||||
output\outform.h output\outlib.h pptok.h preproc.h rdoff\rdoff.h regs.h &
|
||||
saa.h
|
||||
owtest.$(O): owtest.c
|
||||
parser.$(O): parser.c compiler.h float.h insns.h insnsi.h nasm.h nasmlib.h &
|
||||
parser.h pptok.h preproc.h regs.h stdscan.h tables.h tokens.h
|
||||
pptok.$(O): pptok.c compiler.h hashtbl.h nasmlib.h pptok.h preproc.h
|
||||
|
@ -60,15 +60,16 @@ X = .exe
|
||||
NASM = nasm.$(O) nasmlib.$(O) ver.$(O) \
|
||||
raa.$(O) saa.$(O) rbtree.$(O) \
|
||||
float.$(O) insnsa.$(O) insnsb.$(O) \
|
||||
directives.$(O) \
|
||||
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
|
||||
output/outform.$(O) output/outlib.$(O) output/nulldbg.$(O) \
|
||||
output/outbin.$(O) output/outaout.$(O) output/outcoff.$(O) \
|
||||
output/outelf.$(O) output/outelf32.$(O) output/outelf64.$(O) \
|
||||
output/outobj.$(O) output/outas86.$(O) output/outrdf2.$(O) \
|
||||
output/outdbg.$(O) output/outieee.$(O) output/outmacho.$(O) \
|
||||
preproc.$(O) quote.$(O) pptok.$(O) macros.$(O) \
|
||||
listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) strfunc.$(O) \
|
||||
tokhash.$(O) regvals.$(O) regflags.$(O)
|
||||
output/outdbg.$(O) output/outieee.$(O) output/outmacho32.$(O) \
|
||||
output/outmacho64.$(O) preproc.$(O) quote.$(O) pptok.$(O) \
|
||||
macros.$(O) listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) \
|
||||
strfunc.$(O) tokhash.$(O) regvals.$(O) regflags.$(O)
|
||||
|
||||
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) ver.$(O) \
|
||||
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
|
||||
@ -224,6 +225,8 @@ everything: all doc rdf
|
||||
assemble.$(O): assemble.c assemble.h compiler.h insns.h insnsi.h nasm.h \
|
||||
nasmlib.h pptok.h preproc.h regs.h tables.h tokens.h
|
||||
crc64.$(O): crc64.c compiler.h nasmlib.h
|
||||
directives.$(O): directives.c compiler.h directives.h hashtbl.h insnsi.h \
|
||||
nasm.h nasmlib.h pptok.h preproc.h regs.h
|
||||
disasm.$(O): disasm.c compiler.h disasm.h insns.h insnsi.h nasm.h nasmlib.h \
|
||||
pptok.h preproc.h regdis.h regs.h sync.h tables.h tokens.h
|
||||
eval.$(O): eval.c compiler.h eval.h float.h insnsi.h labels.h nasm.h \
|
||||
@ -249,9 +252,9 @@ listing.$(O): listing.c compiler.h insnsi.h listing.h nasm.h nasmlib.h \
|
||||
pptok.h preproc.h regs.h
|
||||
macros.$(O): macros.c compiler.h hashtbl.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h pptok.h preproc.h regs.h tables.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h eval.h float.h insns.h insnsi.h \
|
||||
labels.h listing.h nasm.h nasmlib.h output/outform.h parser.h pptok.h \
|
||||
preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasm.$(O): nasm.c assemble.h compiler.h directives.h eval.h float.h insns.h \
|
||||
insnsi.h labels.h listing.h nasm.h nasmlib.h output/outform.h parser.h \
|
||||
pptok.h preproc.h raa.h regs.h saa.h stdscan.h tokens.h
|
||||
nasmlib.$(O): nasmlib.c compiler.h insns.h insnsi.h nasm.h nasmlib.h pptok.h \
|
||||
preproc.h regs.h tokens.h
|
||||
ndisasm.$(O): ndisasm.c compiler.h disasm.h insns.h insnsi.h nasm.h \
|
||||
@ -281,14 +284,20 @@ output/outelf64.$(O): output/outelf64.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/dwarf.h output/elf64.h output/elfcommon.h output/outelf.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h raa.h rbtree.h regs.h \
|
||||
saa.h stdscan.h
|
||||
output/outexe.$(O): output/outexe.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h pptok.h preproc.h regs.h
|
||||
output/outform.$(O): output/outform.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h pptok.h preproc.h regs.h
|
||||
output/outieee.$(O): output/outieee.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h regs.h
|
||||
output/outlib.$(O): output/outlib.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outlib.h pptok.h preproc.h regs.h
|
||||
output/outmacho.$(O): output/outmacho.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h raa.h regs.h saa.h
|
||||
output/outmacho32.$(O): output/outmacho32.c compiler.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h output/outlib.h pptok.h preproc.h raa.h regs.h \
|
||||
saa.h
|
||||
output/outmacho64.$(O): output/outmacho64.c compiler.h insnsi.h nasm.h \
|
||||
nasmlib.h output/outform.h output/outlib.h pptok.h preproc.h raa.h regs.h \
|
||||
saa.h
|
||||
output/outobj.$(O): output/outobj.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h regs.h stdscan.h
|
||||
output/outrdf.$(O): output/outrdf.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
@ -296,7 +305,6 @@ output/outrdf.$(O): output/outrdf.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outrdf2.$(O): output/outrdf2.c compiler.h insnsi.h nasm.h nasmlib.h \
|
||||
output/outform.h output/outlib.h pptok.h preproc.h rdoff/rdoff.h regs.h \
|
||||
saa.h
|
||||
owtest.$(O): owtest.c
|
||||
parser.$(O): parser.c compiler.h float.h insns.h insnsi.h nasm.h nasmlib.h \
|
||||
parser.h pptok.h preproc.h regs.h stdscan.h tables.h tokens.h
|
||||
pptok.$(O): pptok.c compiler.h hashtbl.h nasmlib.h pptok.h preproc.h
|
||||
|
52
directives.dat
Normal file
52
directives.dat
Normal file
@ -0,0 +1,52 @@
|
||||
;; --------------------------------------------------------------------------
|
||||
;;
|
||||
;; Copyright 1996-2009 The NASM Authors - All Rights Reserved
|
||||
;; See the file AUTHORS included with the NASM distribution for
|
||||
;; the specific copyright holders.
|
||||
;;
|
||||
;; Redistribution and use in source and binary forms, with or without
|
||||
;; modification, are permitted provided that the following
|
||||
;; conditions are met:
|
||||
;;
|
||||
;; * Redistributions of source code must retain the above copyright
|
||||
;; notice, this list of conditions and the following disclaimer.
|
||||
;; * Redistributions in binary form must reproduce the above
|
||||
;; copyright notice, this list of conditions and the following
|
||||
;; disclaimer in the documentation and/or other materials provided
|
||||
;; with the distribution.
|
||||
;;
|
||||
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;;
|
||||
;; --------------------------------------------------------------------------
|
||||
;;
|
||||
;; List of global NASM directives (independent of the backend)
|
||||
;;
|
||||
;; Note: we may want to consider hashing even backend-dependent
|
||||
;; directives, and invoke the backend with an already-decoded directive
|
||||
;; number.
|
||||
;;
|
||||
absolute
|
||||
bits
|
||||
common
|
||||
cpu
|
||||
debug
|
||||
default
|
||||
extern
|
||||
float
|
||||
global
|
||||
list
|
||||
section
|
||||
segment
|
||||
warning
|
28
nasm.c
28
nasm.c
@ -1,5 +1,5 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
*
|
||||
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
@ -14,7 +14,7 @@
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
@ -31,7 +31,7 @@
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* The Netwide Assembler main program module
|
||||
*/
|
||||
|
||||
@ -60,6 +60,7 @@
|
||||
#include "labels.h"
|
||||
#include "output/outform.h"
|
||||
#include "listing.h"
|
||||
#include "directives.h"
|
||||
|
||||
struct forwrefinfo { /* info held on forward refs. */
|
||||
int lineno;
|
||||
@ -284,7 +285,7 @@ static void emit_dependencies(StrList *list)
|
||||
} else {
|
||||
deps = stdout;
|
||||
}
|
||||
|
||||
|
||||
linepos = fprintf(deps, "%s:", depend_target);
|
||||
for (l = list; l; l = l->next) {
|
||||
len = strlen(l->str);
|
||||
@ -296,11 +297,11 @@ static void emit_dependencies(StrList *list)
|
||||
linepos += len+1;
|
||||
}
|
||||
fprintf(deps, "\n\n");
|
||||
|
||||
|
||||
for (l = list; l; l = nl) {
|
||||
if (depend_emit_phony)
|
||||
fprintf(deps, "%s:\n\n", l->str);
|
||||
|
||||
|
||||
nl = l->next;
|
||||
nasm_free(l);
|
||||
}
|
||||
@ -1150,15 +1151,6 @@ static void parse_cmdline(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
/* List of directives */
|
||||
enum directives {
|
||||
D_NONE, D_ABSOLUTE, D_BITS, D_COMMON, D_CPU, D_DEBUG, D_DEFAULT,
|
||||
D_EXTERN, D_FLOAT, D_GLOBAL, D_LIST, D_SECTION, D_SEGMENT, D_WARNING
|
||||
};
|
||||
static const char *directives[] = {
|
||||
"", "absolute", "bits", "common", "cpu", "debug", "default",
|
||||
"extern", "float", "global", "list", "section", "segment", "warning"
|
||||
};
|
||||
static enum directives getkw(char **directive, char **value);
|
||||
|
||||
static void assemble_file(char *fname, StrList **depend_ptr)
|
||||
@ -1520,7 +1512,7 @@ static void assemble_file(char *fname, StrList **depend_ptr)
|
||||
&& forwref->lineno == globallineno);
|
||||
} else
|
||||
output_ins.forw_ref = false;
|
||||
|
||||
|
||||
if (output_ins.forw_ref) {
|
||||
if (passn == 1) {
|
||||
for (i = 0; i < output_ins.operands; i++) {
|
||||
@ -1806,7 +1798,7 @@ static enum directives getkw(char **directive, char **value)
|
||||
*buf++ = '\0';
|
||||
}
|
||||
|
||||
return bsii(*directive, directives, elements(directives));
|
||||
return find_directive(*directive);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1922,7 +1914,7 @@ static void report_error_common(int severity, const char *fmt,
|
||||
{
|
||||
char msg[1024];
|
||||
const char *pfx;
|
||||
|
||||
|
||||
switch (severity & (ERR_MASK|ERR_NO_SEVERITY)) {
|
||||
case ERR_WARNING:
|
||||
pfx = "warning: ";
|
||||
|
Loading…
Reference in New Issue
Block a user