123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/bin/sh
- EM_TABLE=$1
- echo "switch(p->em_opcode) {"
- for i in - cdflnorswz p b
- do
- list=`./argtype $i $EM_TABLE`
- case $i in
- -) args='()'
- echo " /* no arguments */"
- ;;
- cdflnorswz)
- args='(p->em_cst)'
- echo " /* one integer constant argument */"
- ;;
- p)
- args='(p->em_pnam)'
- echo " /* a procedure name argument */"
- ;;
- b)
- : Grumbl, an instruction label as argument is encoded in a sp_cst2
- args='((label) (p->em_cst))'
- echo " /* An instruction label argument */"
- ;;
- esac
- for i in $list
- do
- cat << EOF
- case op_$i:
- C_$i$args;
- break;
- EOF
- done
- done
- list=`./argtype g $EM_TABLE`
- cat << 'EOF'
- 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
- cat << EOF
- case op_$i:
- C_${i}_dlb(p->em_dlb, p->em_off);
- break;
- EOF
- done
- cat << 'EOF'
- }
- }
- else if (p->em_argtype == sof_ptyp) {
- switch(p->em_opcode) {
- default:
- EM_error = "Illegal mnemonic";
- break;
- EOF
- for i in $list
- do
- cat << EOF
- case op_$i:
- C_${i}_dnam(p->em_dnam, p->em_off);
- break;
- EOF
- done
- cat << 'EOF'
- }
- }
- else /*argtype == cst_ptyp */ {
- 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
|