home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume5 / c.s.nawk < prev    next >
Internet Message Format  |  1989-02-03  |  3KB

  1. Path: xanth!nic.MR.NET!hal!ncoast!allbery
  2. From: djones@megatest.UUCP (Dave Jones)
  3. Newsgroups: comp.sources.misc
  4. Subject: v05i040: .c as comments in .s file
  5. Keywords: nawk
  6. Message-ID: <958@goofy.megatest.UUCP>
  7. Date: 9 Nov 88 02:27:15 GMT
  8. Sender: allbery@ncoast.UUCP
  9. Reply-To: djones@megatest.UUCP (Dave Jones)
  10. Organization: Megatest Corporation, San Jose, Ca
  11. Lines: 96
  12. Approved: allbery@ncoast.UUCP
  13.  
  14. Posting-number: Volume 5, Issue 40
  15. Submitted-by: "Dave Jones" <djones@megatest.UUCP>
  16. Archive-name: c.s.nawk
  17.  
  18. [Assembler-dependent (Suns) and wants "new awk".  ++bsa]
  19.  
  20. In 1985, Mssrs. A, W, and K upgraded the programming language AWK,
  21. creating "new awk", or as it is called in BSD-land, "nawk".  
  22.  
  23. I like it.
  24.  
  25. The three acromymic gentlemen have a new book out called 
  26.  
  27.    _The_AWK_Programming_Language_
  28.  
  29. but don't try to use the book if you don't have nawk.
  30.  
  31. If your awk is not nawk, and you don't have nawk as nawk -- got that? --
  32. then you can get nawk by modeming up 201-522-6900 and logging in as 
  33. "guest".  Or so says the book, at least.  I haven't tried it.
  34.  
  35. Ah yes.  This program.  It merges related .c and .s files, turning
  36. the lines of the .c file into line-numbered comments in the
  37. assembly language output. I think it is pretty nifty, compact, and
  38. elegant.  But then, I wrote it, so maybe I'm just vain.
  39.  
  40. Nahhhhh.
  41.  
  42. It runs under Sun3-OS, and I would guess that it would run on
  43. any BSD 4.2-derived system. I don't know enough about the other
  44. Unix flavors to speculate on where else it might work.  Depends on 
  45. arcane matters such and .stab directives, -g options, and the
  46. syntax of assembly language comments.
  47.  
  48. Enjoy.
  49.  
  50.  
  51.  
  52.  
  53. -- snip -- snip -- snip -- snip -- snip -- snip -- snip -- snip -- snip
  54. #! /bin/sh
  55. # This file was wrapped with "dummyshar".  "sh" this file to extract.
  56. # Contents:  c.s.nawk
  57. echo extracting 'c.s.nawk'
  58. if test -f 'c.s.nawk' -a -z "$1"; then echo Not overwriting 'c.s.nawk'; else
  59. sed 's/^X//' << \EOF > 'c.s.nawk'
  60. X
  61. X# This nawk program is called "c.s.nawk".
  62. X#
  63. X# Use it to merge related .c and .s files, turning lines from the
  64. X# .c file into line-numbered comments in the assembly language code.
  65. X#
  66. X# Usage:
  67. X#
  68. X#     cc -g -S foo.c
  69. X#     nawk -f c.s.nawk foo.c foo.s > foo.c.s
  70. X#
  71. X#
  72. X
  73. XBEGIN {
  74. X
  75. X  do {
  76. X    if(!c_eof && !have_c_line) {
  77. X        c_eof = (( getline c_line < ARGV[1] ) != 1 )
  78. X        c_line_num++
  79. X        have_c_line = 1
  80. X    }
  81. X
  82. X    if(!s_eof && !have_s_line) {
  83. X        s_eof = (( getline s_line < ARGV[2] ) != 1)
  84. X        if(!s_eof && (match(s_line, /^\t.stabn\t0104/) != 0)){
  85. X            split(s_line,A,",")
  86. X            s_line_num = A[3]
  87. X        }
  88. X        have_s_line = 1
  89. X        }
  90. X
  91. X    if(!c_eof && ((c_line_num <= s_line_num) || s_eof )) {
  92. X        have_c_line = 0
  93. X        printf "|$ %4.4d %s\n", c_line_num, c_line
  94. X    }else{
  95. X        if(!s_eof) {
  96. X            have_s_line = 0
  97. X                if(match(s_line, /^\t.stab/) == 0)
  98. X                printf "%s\n", s_line
  99. X        }
  100. X        }
  101. X    
  102. X  }while( !s_eof || !c_eof )
  103. X
  104. X
  105. X} # END
  106. EOF
  107. chars=`wc -c < 'c.s.nawk'`
  108. if test $chars !=     937; then echo 'c.s.nawk' is $chars characters, should be     937 characters!; fi
  109. exit 0
  110.