12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/bin/sh
- EM_TABLE=$1
- argtype=$2
- 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:
- C_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:
- C_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:
- C_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
|