74 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
h=${1-.}
 | 
						|
d=${2-.}
 | 
						|
 | 
						|
set `grep fpseu em_table`
 | 
						|
p=$2
 | 
						|
set `grep fmnem em_table`
 | 
						|
m=$2
 | 
						|
 | 
						|
ed - em_table <<'A' > X
 | 
						|
1,/^$/g/	/s// /gp
 | 
						|
A
 | 
						|
 | 
						|
ed - em_table <<'A' | awk '{$2=$2+'$p'; print}' > Y
 | 
						|
1,/^$/d
 | 
						|
1,/^$/g/	/s// /gp
 | 
						|
A
 | 
						|
 | 
						|
ed - em_table <<'A' | awk '{print $0,'$m'+i++}' > Z
 | 
						|
1,/^$/d
 | 
						|
1,/^$/d
 | 
						|
1,/^$/g/	/s// /gp
 | 
						|
A
 | 
						|
 | 
						|
i=`wc -l <Y`
 | 
						|
echo 'lpseu' `expr $i + $p - 1` >>X
 | 
						|
i=`wc -l <Z`
 | 
						|
echo 'lmnem' `expr $i + $m - 1` >>X
 | 
						|
 | 
						|
ed - X <<'A' > $h/em_spec.h
 | 
						|
g/^/s//#define sp_/p
 | 
						|
A
 | 
						|
 | 
						|
ed - Y <<'A' > $h/em_pseu.h
 | 
						|
g/ \(.*\) .*/s// \1/
 | 
						|
g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
 | 
						|
A
 | 
						|
 | 
						|
ed - Z <<'A' > $h/em_mnem.h
 | 
						|
g/ .* /s// /
 | 
						|
g/\(.*\) \(.*\)/s//#define op_\1 \2/p
 | 
						|
A
 | 
						|
 | 
						|
(
 | 
						|
echo 'char em_pseu[][4] = {'
 | 
						|
ed - Y <<'A'
 | 
						|
g/\(...\).*/s//	"\1",/p
 | 
						|
A
 | 
						|
echo '};'
 | 
						|
) > $d/em_pseu.c
 | 
						|
 | 
						|
(
 | 
						|
echo 'char em_mnem[][4] = {'
 | 
						|
ed - Z <<'A'
 | 
						|
g/\(...\).*/s//	"\1",/p
 | 
						|
A
 | 
						|
echo '};'
 | 
						|
) > $d/em_mnem.c
 | 
						|
 | 
						|
(
 | 
						|
echo '#include	<em_flag.h>
 | 
						|
char em_flag[] = {'
 | 
						|
ed - Z <<'A' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
 | 
						|
g/^... /s///
 | 
						|
g/ .*/s///
 | 
						|
g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
 | 
						|
g/-/s//NO/g
 | 
						|
g/.*/s//	&,/p
 | 
						|
A
 | 
						|
echo '};'
 | 
						|
) > $d/em_flag.c
 | 
						|
 | 
						|
rm X Y Z
 |