$(COMPARE) man/read_em.3
pr:
- @pr Makefile m_C_funcs m_C_mnem m_C_mnem_na argtype $(SRCFILES)
+ @pr Makefile m_C_mnem m_C_mnem_na argtype $(SRCFILES)
opr:
make pr | opr
clean:
- rm -f *.o *.a C_funcs C_mnem C_mnem_narg
+ rm -f *.o *.a C_mnem C_mnem_narg
libread_emk.a: $(K_OFILES)
ar r libread_emk.a $(K_OFILES)
$(CC) -c $(CFLAGS) -DCHECKING read_em.c
mv read_em.o read_emeV.o
-makecalls.o: C_funcs C_mnem C_mnem_narg em_comp.h mkcalls.c
+makecalls.o: C_mnem C_mnem_narg em_comp.h mkcalls.c
$(CC) -c $(CFLAGS) mkcalls.c
mv mkcalls.o makecalls.o
-makecallsV.o: C_funcs C_mnem C_mnem_narg em_comp.h mkcalls.c
+makecallsV.o: C_mnem C_mnem_narg em_comp.h mkcalls.c
$(CC) -c $(CFLAGS) -DCHECKING mkcalls.c
mv mkcalls.o makecallsV.o
C_mnem_narg: m_C_mnem_na argtype
sh m_C_mnem_na > C_mnem_narg
-C_funcs: m_C_funcs argtype
- sh m_C_funcs > C_funcs
-
-lintlib: C_mnem C_mnem_narg C_funcs
+lintlib: C_mnem C_mnem_narg
lint $(INCLUDES) $(DEFINES) -DCOMPACT -DCHECKING -Cread_emkV $(KSRCFILES)
lint $(INCLUDES) $(DEFINES) -DCHECKING -Cread_emeV $(ESRCFILES)
mv llib-lread_emeV.ln llib-lread_emkV.ln $(MODULES)/lib
EM_TABLE=../../../etc/em_table
echo "switch(p->em_opcode) {"
-echo ' default: EM_error = "Illegal mnemonic"; break;'
for i in - cdflnorswz p b
do
list=`./argtype $i $EM_TABLE`
esac
for i in $list
do
- echo " case op_$i:"
+ cat << EOF
+ case op_$i:
+ C_$i$args;
+ break;
+EOF
done
- echo " (*C_funcs[p->em_opcode])$args; break;"
done
list=`./argtype g $EM_TABLE`
-for i in $list
-do
- echo " case op_$i:"
-done
cat << 'EOF'
- /* a "g" argument */
+ default:
+/* a "g" argument */
if (p->em_argtype == nof_ptyp) {
switch(p->em_opcode) {
+ default:
+ EM_error = "Illegal mnemonic";
+ break;
EOF
for i in $list
do
}
else if (p->em_argtype == sof_ptyp) {
switch(p->em_opcode) {
+ default:
+ EM_error = "Illegal mnemonic";
+ break;
EOF
for i in $list
do
}
}
else /*argtype == cst_ptyp */ {
- (*C_funcs[p->em_opcode])(p->em_cst);
- break;
+ switch(p->em_opcode) {
+ default:
+ EM_error = "Illegal mnemonic";
+ break;
+EOF
+for i in $list
+do
+ cat << EOF
+ case op_$i:
+ C_$i(p->em_cst);
+ break;
+EOF
+done
+cat << 'EOF'
+ }
}
}
EOF
extern char em_flag[]; /* One per EM instruction: indicates parameter kind */
extern short em_ptyp[]; /* One per parameter kind: indicates parameter type */
-#include "C_funcs"
-
static int listtype = 0; /* indicates pseudo when generating code for
variable length argument lists
(only for MES)