Lines Matching +full:2 +full:s

1 #!/usr/bin/perl -s
22 # Programmer's guide, with the new instructions, registers, etc.
25 # Differences between this assembler and NCR's are that
29 # 2. I also emit a script_u.h file, which will undefine all of
43 #$prefix; # (set by perl -s)
92 'SCNTL0', 0, 'SCNTL1', 1, 'SDID', 2, 'SIEN', 3,
112 'SCNTL0', 0, 'SCNTL1', 1, 'SCNTL2', 2, 'SCNTL3', 3,
149 $value = "$identifier|$identifier\\s*[+\-]\\s*$decnum|".
150 "$identifier\\s*[+-]\s*$hexnum|$constant";
236 if ($value =~ /^REL\s*\(\s*($identifier)\s*\)\s*(.*)/i) {
239 $value = $2;
241 } elsif ($value =~ /^($identifier)\s*(.*)/) {
244 $value = $2;
272 if ($conditional =~ /^\s*(IF|WHEN)\s*(.*)/i) {
274 $conditional = $2;
290 if ($conditional =~ /^NOT\s+(.*)$/i) {
302 if ($conditional =~ /^ATN\s*(.*)/i) {#
309 } elsif ($conditional =~ /^($phase)\s*(.*)/i) {
313 $conditional = $2;
321 if ($conditional =~ /^(AND|OR)\s*(.*)/i) {
323 $conditional = $2;
334 " if ($conjunction !~ /\s*$other\s*/i);
340 if ($conditional=~ /^($value)\s*(.*)/i) {
342 $conditional = $2;
352 if ($conditional =~ /^\s*,\s*(.*)/) {
354 if ($conditional =~ /^AND\s\s*MASK\s\s*($value)\s*(.*)/i) {
358 expected end of line, not \"$2\"
359 " if ($2 ne '');
362 expected \",AND MASK <data>\", not \"$2\"
365 } elsif ($conditional !~ /^\s*$/) {
382 s/;.*$//; # Strip comments
388 if (/^\s*($identifier)\s*:(.*)/) {
393 $_ = $2;
401 if (/^\s*(ABSOLUTE|RELATIVE)\s+(.*)/i) {
403 $rest = $2;
404 foreach $rest (split (/\s*,\s*/, $rest)) {
405 if ($rest =~ /^($identifier)\s*=\s*($constant)\s*$/) {
406 local ($id, $cnst) = ($1, $2);
425 } elsif (/^\s*EXTERNAL\s+(.*)/i) {
428 if ($external =~ /\s*($identifier)\s*$/) {
445 } elsif (/^\s*ENTRY\s+(.*)/i) {
446 if ($1 =~ /^($identifier)\s*$/) {
455 } elsif (/^\s*MOVE\s+(.*)/i) {
457 if ($rest =~ /^FROM\s+($value)\s*,\s*(WITH|WHEN)\s+($phase)\s*$/i) {
459 $with_when = $2;
465 $address += 2;
466 } elsif ($rest =~ /^($value)\s*,\s*(PTR\s+|)($value)\s*,\s*(WITH|WHEN)\s+($phase)\s*$/i) {
468 $ptr = $2;
477 $address += 2;
478 } elsif ($rest =~ /^MEMORY\s+(.*)/i) {
481 if ($rest =~ /^($value)\s*,\s*($value)\s*,\s*($value)\s*$/) {
483 $source = $2;
488 &parse_value ($dest, 2, 0, 4);
490 $code[$address], $code[$address+1], $code[$address +2] if
500 } elsif ($1 =~ /^(.*)\s+(TO|SHL|SHR)\s+(.*)/i) {
503 $op = "\U$2\E";
514 /^($register)\s+(-|$operator)\s+($value)\s*$/i) {
517 $op = "\U$2\E";
523 } elsif ($src =~ /^($register)\s*$/i) {
532 } elsif (!$force && $src =~ /^($value)\s*$/i) {
552 if ($rest =~ /^($register)\s*(.*)$/i) {
554 $rest = $2;
562 if ($rest =~ /^WITH\s+CARRY\s*(.*)/i) {
574 if ($rest !~ /^\s*$/) {
607 $address += 2;
618 } elsif (/^\s*(SELECT|RESELECT)\s+(.*)/i) {
619 $rest = $2;
620 if ($rest =~ /^(ATN|)\s*($value)\s*,\s*($identifier)\s*$/i) {
622 $id = $2;
627 &parse_value($id, 0, 2, 1);
629 $address += 2;
630 } elsif ($rest =~ /^(ATN|)\s*FROM\s+($value)\s*,\s*($identifier)\s*$/i) {
632 $addr = $2;
639 $address += 2;
649 } elsif (/^\s*WAIT\s+(.*)/i) {
652 if ($rest =~ /^DISCONNECT\s*$/i) {
655 $address += 2;
656 } elsif ($rest =~ /^(RESELECT|SELECT)\s+($identifier)\s*$/i) {
657 $alt_addr = $2;
660 $address += 2;
671 } elsif (/^\s*(SET|CLEAR)\s+(.*)/i) {
673 $list = $2;
676 foreach $arg (split (/\s+AND\s+/i,$list)) {
694 $address += 2;
695 } elsif (/^\s*(JUMP|CALL|INT)\s+(.*)/i) {
697 $rest = $2;
708 if ($rest =~ /^(REL\s*\(\s*$identifier\s*\))\s*(.*)/i) {
710 $rest = $2;
715 } elsif ($rest =~ /^($value)\s*(.*)/) {
717 $rest = $2;
726 if ($rest =~ /^,\s*(.*)/) {
728 } elsif ($rest =~ /^\s*$/) {
737 $address += 2;
738 } elsif (/^\s*(RETURN|INTFLY)\s*(.*)/i) {
740 $conditional = $2;
744 if ($conditional =~ /^,\s*(.*)/) {
747 } elsif ($conditional !~ /^\s*$/) {
757 $address += 2;
758 } elsif (/^\s*DISCONNECT\s*$/) {
761 $address += 2;
764 } elsif (/^\s*NOP\s*$/i) {
767 $address += 2;
769 } elsif (/^\s*$/) {
797 foreach $j (split (/\s+/,$symbol_references{$i})) {
800 $address = $2;
814 for $reference (split(/\s+/,$symbol_references{$external})) {
817 $address = $2;
845 for $reference (split(/\s+/,$symbol_references{$label})) {
848 $address = $2;
852 die "$0 : symbol $label has invalid reference at $1, size $2\n";
885 ($_ = $0) =~ s:.*/::;
895 if ($code[$i + 1] =~ /\s*($identifier)(.*)$/) {
897 printf OUTPUT "0%s,", $2
903 if ($code[$i + 2] =~ /$identifier/) {
904 push (@external_patches, $i+2, $code[$i+2]);
907 printf OUTPUT "0x%08x,\n",$code[$i+2];
912 $i += 2;
928 foreach $j (split (/\s+/,$symbol_references{$i})) {
931 $address = $2;
959 printf OUTPUT "\t{0x%08x, &%s},\n", $off, $ident;