<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>머루 생각</title>
	<link>http://chammoru.egloos.com</link>
	<description>머루 생각 Season.2</description>
	<language>ko</language>
	<pubDate>Wed, 25 Nov 2009 00:23:05 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>머루 생각</title>
		<url>http://pds11.egloos.com/logo/200809/06/79/c0031679.jpg</url>
		<link>http://chammoru.egloos.com</link>
		<width>80</width>
		<height>65</height>
		<description>머루 생각 Season.2</description>
	</image>
  	<item>
		<title><![CDATA[ Shell Script ]]> </title>
		<link>http://chammoru.egloos.com/5130676</link>
		<guid>http://chammoru.egloos.com/5130676</guid>
		<description>
			<![CDATA[ 
  <a href="http://www.faqs.org/docs/air/tsshell.html">http://www.faqs.org/docs/air/tsshell.html</a><br />
<br />
<h1>An Introduction To Shell Programming</h1><p><em>v1.0.0 / 01 may 03 / greg goebel / public domain</em> <p>* The UN*X operating system provides a flexible set of simple tools to allow you to perform a wide variety of system-management, text-processing, and general-purpose tasks. These simple tools can be used in very powerful ways by tying them together programmatically, using using "shell scripts" or "shell programs". <p>The UN*X "shell" itself is a user-interface program that accepts commands from the user and executes them. It can also accept the same commands written as a list in a file, along with various other statements that the shell can interpret to provide input, output, decision-making, looping, variable storage, option specification, and so on. This file is a shell program. <p>Shell programs are, like any other programming language, useful for some things but not for others. They are excellent for system-management tasks but not for general-purpose programming of any sophistication. Shell programs, though generally simple to write, are also tricky to debug and slow in operation. <p>There are three versions of the UN*X shell: the original "Bourne shell (sh)", the "C shell (csh)" that was derived from it, and the "Korn shell (ksh)" that is in predominant use. <p>This document focuses on the Bourne shell. The C shell is more powerful but has various limitations, and while the Korn shell is clean and more powerful than the other two shells, it is a superset of the Bourne shell: anything that runs on a Bourne shell runs on a Korn shell. Since the Bourne shell's capabilities are probably more than most people require, there's no reason to elaborate much beyond them in an introductory document, and the rest of the discussion will assume use of the Bourne shell unless otherwise stated. <p><hr><a href="http://www.faqs.org/docs/air/tsshell.html#m1">[1] GETTING STARTED</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m2">[2] SHELL VARIABLES</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m3">[3] COMMAND SUBSTITUTION</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m4">[4] COMMAND-LINE ARGUMENTS</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m5">[5] DECISION-MAKING &amp; LOOP CONSTRUCTS</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m6">[6] OTHER SHELL FEATURES</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m7">[7] USEFUL TOOLS</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m8">[8] REGULAR EXPRESSIONS</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m9">[9] GREP, SED, &amp; AWK</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m10">[10] SHELL PROGRAM EXAMPLES</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m11">[11] QUICK REFERENCE</a><br />
<a href="http://www.faqs.org/docs/air/tsshell.html#m12">[12] REVISION HISTORY</a><br />
<hr><p><h2><a name="m1">[1] GETTING STARTED</a></h2><p>* The first thing to do in understanding shell programs is to understand the elementary system commands that can be used in them. A list of fundamental UN*X system commands follows: <bold><pre>  ls         # Give a simple listing of files.<br />
  ll         # Give a listing of files with file details.<br />
  cp         # Copy files.<br />
  mv         # Move or rename files.<br />
  rm         # Remove files.  <br />
  rm -r      # Remove entire directory subtree.<br />
  cd         # Change directories.<br />
  pwd        # Print working directory.<br />
  cat        # Lists a file or files sequentially.<br />
  more       # Displays a file a screenfull at a time.<br />
  pg         # Variant on "more".<br />
  mkdir      # Make a directory.<br />
  rmdir      # Remove a directory.</pre></bold>The shell executes such commands when they are typed in from the command prompt with their appropriate parameters, which are normally options and file names. <p>* The shell also allows files to be defined in terms of "wildcard characters" that define a range of files. The "*" wildcard character substitutes for any string of characters, so: <bold><pre>   rm *.txt</pre></bold>-- deletes all files that end with ".txt". The "?" wildcard character substitutes for any single character, so: <bold><pre>   rm book?.txt</pre></bold>-- deletes "book1.txt", "book2.txt", and so on. More than one wildcard character can be used at a time, for example: <bold><pre>   rm *book?.txt</pre></bold>-- deletes "book1.txt", "mybook1.txt", "bigbook2.txt", and so on. <p>* Another shell capability is "input and output redirection". The shell accepts input by default from what is called "standard input", and generates output by default to what is called "standard output". These are normally defined as the keyboard and display, respectively, or what is referred to as the "console" in UN*X terms. <p>However, you can "redirect" standard input or output to a file or another program if needed. Consider the "sort" command. This command sorts a list of words into alphabetic order, so if you enter: <bold><pre>   sort<br />
   PORKY<br />
   ELMER<br />
   FOGHORN<br />
   DAFFY<br />
   WILE<br />
   BUGS</pre></bold>-- the shell spits back out at you: <bold><pre>   BUGS<br />
   DAFFY<br />
   ELMER<br />
   FOGHORN<br />
   PORKY<br />
   WILE<br />
</pre></bold>Note that the CTL-D key input terminates direct keyboard input. You could just as well store the same words in a file and then "redirect" the contents of that file to standard input with the "&lt;" operator: <bold><pre>   sort &lt; names.txt</pre></bold>This would list the sorted names to the display as before. If you wanted to store the sorted names in a file, you could redirect them to standard output with the "&gt;" operator: <bold><pre>   sort &lt; names.txt &gt; output.txt</pre></bold>You can also append to an existing file using the "&gt;&gt;" operator: <bold><pre>   sort &lt; names.txt &gt;&gt; output.txt</pre></bold>In these cases, you don't see any output, since the command just executes and ends. However, you can fix that by connecting the "tee" command to the output through a "pipe", designated by "|". This allows the standard input of one command to be chained into the standard input of another command. In the case of "tee", it accepts text into its standard input and redirects it both to a file and to standard output: <bold><pre>   sort &lt; names.txt | tee output.txt</pre></bold>So this both displays the names and puts them in the output file. You can chain together many commands to "filter" information through several processing steps. This ability to combine the effects of commands is one of the beauties of shell programming. <p>By the way, "sort" has some handy additional options: <bold><pre>   sort -u    # Eliminate redundant lines in output.<br />
   sort -r    # Sort in reverse order.<br />
   sort -n    # Sort numbers. <br />
   sort +1    # Skip first field in sorting.</pre></bold>* If a command generates an error, it is displayed to what is called "standard error", instead of standard output, which defaults to the console. It will not be redirected by "&gt;". However, you can use "2&gt;" to redirect the error message. For example: <bold><pre>   ls xyzzy 2&gt; /dev/null</pre></bold>-- will give an error message if the file "xyzzy" doesn't exist, but the error will be redirected to the file "/dev/null". This is actually a "special file" that exists under UN*X where everything sent to it is simply discarded. <p>* The shell allows you to execute multiple commands sequentially on one line by chaining them with a ";": <bold><pre>   rm *.txt ; ls</pre></bold>A time-consuming program can also be run in a "parallel" fashion by following it with a "&amp;": <bold><pre>   sort &lt; bigfile.txt &gt; output.txt &amp;</pre></bold>* These commands and operations are essential elements for creating shell programs. They can be stored in a file and then executed by the shell. <p>You instruct the shell that the file contains commands by marking it as "executable" with the "chmod" command. Each file under UN*X has a set of "permission" bits, listed by an "ll" as: <bold><pre>   rwxrwxrwx</pre></bold>The "r" gives "read" permission, the "w" gives "write" permission, and the "x" gives "execute" permission. There are three sets of these permission bits, one for the user, one for other members of a local group of users on a system, and one for everyone who can access the system -- remember that UN*X is normally a multiuser environment. <p>You can use "chmod" to set these permissions by specifying them as an octal code. For example: <bold><pre>   chmod 644 myfile.txt</pre></bold>This gives you both read and write permission on the file, but everybody else only gets read permission. You can use the same octal scheme to set execute permission, or just use the "+x" option: <bold><pre>   chmod +x mypgm</pre></bold>This done, if you enter the name "mypgm" at the prompt, the shell reads the commands out of "mypgm" and executes them. You can remove the execute permission with the "-x" option. <p>For example, suppose you want to be able to inspect the contents of a set of archive files stored in the directory "/users/group/archives". You could create a file named "ckarc" and store the the following command string in it: <bold><pre>  ls /users/group/archives | pg</pre></bold>This is a very simple shell program. As noted, the shell has control constructs, supports storage variables, and has several options that can be set to allow much more sophisticated programs. <p>The following sections describe these features in a quick outline fashion. Please remember that you can't really make much effective use of most of the features until you've learned about all of them, so if you get confused just keep on going and then come back for a second pass. <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m2">[2] SHELL VARIABLES</a></h2><p>* The first useful command to know about in building shell programs is "echo", which allows you to perform output from your shell program: <bold><pre>   echo "This is a test!"</pre></bold>This sends the string "This is a test!" to standard output. It is recommended that your shell programs generate some output to inform the user of what they are doing. <p>The shell allows you to store values in variables. All you have to do to declare a variable is assign a value to it: <bold><pre>   shvar="This is a test!"</pre></bold>The string is enclosed in double-quotes to ensure that the variable swallows the entire string (more on this later), and there are <em>no</em> spaces around the "=". The value of the shell variable can be obtained by preceding it with a "$": <bold><pre>   echo $shvar</pre></bold>This displays "This is a test!". If you hadn't stored a value in that shell variable, you would have simply got a blank line. Values stored in shell variables can be used as parameters to other programs as well: <bold><pre>   ll $lastdir</pre></bold>You can wipe out a value stored in a shell variable by assigning the "null string" to it: <bold><pre>   $shvar=""</pre></bold>There are some subtleties in using shell variables. For example, suppose your shell program performed the assignment: <bold><pre>   allfiles=*</pre></bold>-- and then performed: <bold><pre>   echo $allfiles</pre></bold>This would echo a list of all the files in the directory. However, only the string "*" would be stored in "allfiles". The expansion of "*" only occurs when the "echo" command is executed. <p>Another subtlety is in modifying the values of shell variables. Suppose you have a file name in a shell variable named "myfile" and want to copy that file to another with the same name, but with "2" tacked on to the end. You might think to try: <bold><pre>   mv $myfile $myfile2</pre></bold>-- but you'd quickly realize that the shell will think that "myfile2" is a different shell variable, and this won't work. Fortunately, there is a way around this. You can perform the change as follows: <bold><pre>   mv $myfile ${myfile}2</pre></bold>* Your UN*X installation will have some variables installed by default, most importantly $HOME, which gives the location of your home directory. <p>If you want to call other shell programs from a shell program and have them use the same shell variables as the calling program, you have to "export" them as follows: <bold><pre>   shvar="This is a test!"<br />
   export shvar<br />
   echo "Calling program two."<br />
   shpgm2<br />
   echo "Done!"</pre></bold>If "shpgm2" simply contains: <bold><pre>   echo $shvar</pre></bold>-- then it will echo "This is a test!". <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m3">[3] COMMAND SUBSTITUTION</a></h2><p>The next step is to consider shell command substitution. Like any programming language, the shell does exactly what you tell it to do and so you have to be very specific when you tell it to do something. <p>As an example, consider the "fgrep" command, which searches a file for a string. Suppose you want to search a file named "source.txt" for the string "Coyote". You could do this with: <bold><pre>   fgrep Coyote source.txt</pre></bold>-- and it would print out the matching lines. However, suppose you wanted to search for "Wile E. Coyote". If you did this as: <bold><pre>   fgrep Wile E. Coyote source.txt</pre></bold>-- you'd get an error message that "fgrep" couldn't open "E.". You need to enclose the string in double-quotes (""): <bold><pre>   fgrep "Wile E. Coyote" source.txt</pre></bold>If a string has a special character in it, such as "*" or "?", that you want to be interpreted as a "literal" and not a wildcard, the shell can get a little confused. If you want to ensure that the wildcards are not interpreted, you can either "escape" the wildcard with a backslash ("\*" or "\?") or enclose the string in single quotes, which prevents the shell from interpreting any of the characters within the string. <p>For example, if you executed: <bold><pre>   echo "$shvar"</pre></bold>-- from a shell program, you would output the value of the shell variable "$shvar". If instead you used: <bold><pre>   echo '$shvar'</pre></bold>-- you would get the string "$shvar". <p>* Having considered "double-quoting" and "single-quoting", let's now consider "back-quoting". This is a little tricky to explain. As a useful tool, consider the "expr" command, which allows you to do simple math from the command line: <bold><pre>   expr 2 + 4</pre></bold>This returns the value "6". You must have spaces between the parameters, and that if you perform a multiplication you have to "escape" the "*" so the shell doesn't interpret it: <bold><pre>   expr 3 \* 7 </pre></bold>Now suppose you stored the string "expr 12 / 3" in a shell variable named "shcmd". If you executed: <bold><pre>   echo $shcmd</pre></bold>-- or: <bold><pre>   echo "$shcmd"</pre></bold>-- you'd get "expr 12 / 3". If you used single-quotes: <bold><pre>   echo '$shcmd'</pre></bold>-- you'd get the string "$shcmd". But if you used <em>back</em>-quotes, the reverse form of a single quote: <bold><pre>   echo `$shcmd`</pre></bold>-- you'd get the value "4", since the string inside "shcmd" is executed. This is an extremely powerful technique that can be very confusing to use in practice. <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m4">[4] COMMAND-LINE ARGUMENTS</a></h2><p>* In general, shell programs operate in a "batch" mode, that is, without interaction from the user, and so most of their parameters are obtained on the command line. <p>Each argument on the command line can be seen inside the shell program as a shell variable of the form "$1", "$2", "$3", and so on, with "$1" corresponding to the first argument, "$2" the second, "$3" the third, and so on. <p>There is also a "special" argument variable, "$0", that gives the name of the shell program itself. Other special variables include "$#", which gives the number of arguments supplied, and "$*", which gives a string with <em>all</em> the arguments supplied. <p>Since the argument variables are in the range "$1" to "$9", so what happens if you have more than 9 arguments? No problem, you can use the "shift" command to move the arguments down through the argument list. That is, when you execute "shift" then the second argument becomes "$1", the third argument becomes "$2", and so on, and if you do a "shift" again the third argument becomes "$1"; and so on. You can also add a count to cause a multiple shift: <bold><pre>   shift 3</pre></bold>-- shifts the arguments three times, so that the fourth argument ends up in "$1". <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m5">[5] DECISION-MAKING &amp; LOOP CONSTRUCTS</a></h2><p>* Shell programs can perform conditional tests on their arguments and variables and execute different commands based on the results. For example: <bold><pre>   if [ "$1" = "hyena" ]<br />
   then<br />
     echo "Sorry, hyenas not allowed."<br />
     exit<br />
   elif [ "$1" = "jackal" ]<br />
   then<br />
     echo "Jackals not welcome."<br />
     exit<br />
   else<br />
     echo "Welcome to Bongo Congo."<br />
   fi <br />
   echo "Do you have anything to declare?"</pre></bold>-- checks the command line to see if the first argument is "hyena" or "jackal" and bails out, using the "exit" command, if they are. Other arguments allow the rest of the file to be executed. Note how "$1" is enclosed in double quotes, so the test will not generate an error message if it yields a null result. <p>There are a wide variety of such test conditions: <bold><pre>   [ "$shvar" = "fox" ]     String comparison, true if match.<br />
   [ "$shvar" != "fox" ]    String comparison, true if no match.<br />
   [ "$shvar" = "" ]        True if null variable.<br />
   [ "$shvar" != "" ]       True if not null variable.<br />
<br />
   [ "$nval" -eq 0 ]        Integer test; true if equal to 0.<br />
   [ "$nval" -ge 0 ]        Integer test; true if greater than or equal to 0.<br />
   [ "$nval" -gt 0 ]        Integer test; true if greater than 0.<br />
   [ "$nval" -le 0 ]        Integer test; true if less than or equal to 0.<br />
   [ "$nval" -lt 0 ]        Integer test; true if less than to 0.<br />
   [ "$nval" -ne 0 ]        Integer test; true if not equal to 0.<br />
<br />
   [ -d tmp ]               True if "tmp" is a directory.<br />
   [ -f tmp ]               True if "tmp" is an ordinary file.<br />
   [ -r tmp ]               True if "tmp" can be read.<br />
   [ -s tmp ]               True if "tmp" is nonzero length.<br />
   [ -w tmp ]               True if "tmp" can be written.<br />
   [ -x tmp ]               True if "tmp" is executable.</pre></bold>There is also a "case" control construct that checks for equality with a list of items. It can be used with the example at the beginning of this section: <bold><pre>   case "$1" <br />
   in<br />
     "gorilla")  echo "Sorry, gorillas not allowed."<br />
                 exit;;<br />
     "hyena")    echo "Hyenas not welcome."<br />
                 exit;;<br />
     *)          echo "Welcome to Bongo Congo.";;<br />
   esac<br />
</pre></bold>The string ";;" is used to terminate each "case" clause. <p>* The fundamental loop construct in the shell is based on the "for" command. For example: <bold><pre>   for nvar in 1 2 3 4 5<br />
   do<br />
     echo $nvar<br />
   done<br />
</pre></bold><br />
-- echoes the numbers 1 through 5. You could echo the names of all the files in the current directory with: <bold><pre>   for file in *<br />
   do<br />
     echo $file<br />
   done<br />
</pre></bold><br />
One nice little feature of the shell is that if you don't actually specify the "in" parameters for the "for" command, it just assumes you want the command-line arguments. If you simply typed in: <bold><pre>   for file <br />
   do<br />
     echo $file<br />
   done<br />
</pre></bold><br />
* There is a "break" command to allow you to exit a loop if necessary: <bold><pre>   for file<br />
   do<br />
     if [ "$file" = punchout ]<br />
     then <br />
       break<br />
     else<br />
       echo $file<br />
     fi<br />
   done</pre></bold>There is also a "continue" command that allows you to start the next iteration of the loop immediately. You <em>must</em> have a command in the "then" or "else" clauses, or you'll get an error message. If you don't want to, say, actually do anything in the "then" clause, you can use ":" as a "no-op" command: <bold><pre>   then<br />
     :<br />
   else</pre></bold>* There are two other looping constructs available as well, "while" and "until". For an example of "while": <bold><pre>   n=10<br />
   while [ "$n" -ne 0 ]<br />
   do<br />
     echo $n<br />
     n=`expr $n - 1`<br />
   done</pre></bold>-- counts down from 10 to 1. The "until" loop has similar syntax but tests for a false condition: <bold><pre>   n=10<br />
   until [ "$n" -eq 0 ]<br />
   do<br />
   ...</pre></bold><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m6">[6] OTHER SHELL FEATURES</a></h2><p>* There are other useful features available for writing shell programs. For example, you can comment your programs by preceding the comments with a "#": <bold><pre>   # This is an example shell program.<br />
   cat /users/group/grouplog.txt | pg    # Read group log file.</pre></bold>It is strongly recommended that you provide comments in <em>all</em> your shell programs. If they are just one-liners, a simple comment line will do. If they are complicated shell programs, they should have a title, revision number, revision date, and revision history along with descriptive comments. <p>This will prevent prevent confusion if you find copies of the same file that don't have the same comments, or try to modify the program later. Shell programs can be obscure, even by the standards of programming languages, and it is useful to provide a few hints. <p>* You can read standard input into a shell program using the "read" command. For example: <bold><pre>   echo "What is your name?"<br />
   read myname<br />
   echo myname</pre></bold>-- echoes your own name. The "read" command will read each item of standard input into a list of shell variables until it runs out of shell variables, and then it will read all the rest of standard input into the last shell variable. As a result, in the example above your entire name is stored into "myname". <p>* If you have a command too long to fit on one line, you can use the line continuation character "\" to put it on more than one line: <bold><pre>   echo "This is a test of \<br />
         the line continuation character."</pre></bold>* There is a somewhat cryptic command designated by "." that allows you to execute a file of commands within your current shell program. For example: <bold><pre>  . mycmds</pre></bold>-- will execute the commands stored in the file "mycmds". It's something like an "include" command in other languages. <p>* If you want to trace the execution of a shell program, you can use the "-x" option with the shell: <bold><pre>   sh -x mypgm *</pre></bold>This traces out the steps "mypgm" takes during the course of its operation. <p>* One last comment on shell programs before proceeding: What happens if you have a shell program that just performs, say: <bold><pre>  cd /users/coyote</pre></bold>-- to allow you to change to another directory? Well, if you do this, you'll find that nothing happens. After you run the shell program, you're still in the same directory you were when you started. <p>The reason is that the shell creates a new shell, or "subshell", to run the shell program, and when the shell program is finished, the subshell vanishes -- along with any changes made in that subshell's environment. It is easier, at least in this simple case, to define a command alias in your UN*X "login" shell rather than struggle with the problem in shell programs. <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m7">[7] USEFUL TOOLS</a></h2><p>* Before we go on to practical shell programs, let's consider a few more useful tools. <p>The "paste" utility takes a list of text files and concatenates them on a line-by-line basis. For example: <bold><pre>   paste names.txt phone.txt &gt; data.txt</pre></bold>-- takes a file containing names and a file containing corresponding phone numbers and generates a file with each name and number on a separate line. <p>* The "head" and "tail" utilities list the first 10 or last 10 lines in a file respectively. You can specify the number of lines to be listed if you like: <bold><pre>   head -5 source.txt      # List first 5 lines.<br />
   tail -5 source.txt      # List last 5 lines.<br />
   tail +5 source.txt      # List all lines after line 5.</pre></bold>* The "tr" utility translates from one set of characters to another. For example, to translate uppercase characters to lowercase characters: <bold><pre>   tr '[A-Z]' '[a-z]' &lt; file1.txt &gt; file2.txt</pre></bold>You can of course make the reverse conversion using: <bold><pre>   tr '[a-z]' '[A-Z]' &lt; file1.txt &gt; file2.txt</pre></bold>A "-d" option allows you to delete a character. For example: <bold><pre>   tr -d '*'</pre></bold>-- deletes all asterisks from the input stream. Note that "tr" only works on single characters. <p>* The "uniq" utility removes duplicate consecutive lines from a file. It has the syntax: <bold><pre>   uniq source.txt output.txt</pre></bold>A "-c" option provides an additional count of the number of times a line was duplicated, while a "-d" option allows you to display only the duplicated lines in a file. <p>* The "wc (word count)" utility tallies up the characters, words, and lines of text in a text file. You can also invoke it with the following options: <bold><pre>    wc -c        # Character count only.<br />
    wc -w        # Word count only.<br />
    wc -l        # Line count only.</pre></bold>* The "find" utility is extremely useful, if a little hard to figure out. Essentially, it traverses a directory subtree and performs whatever action you want to perform on each directory. For example: <bold><pre>   find / -name findtest.txt -print</pre></bold>This searches from the root directory ("/") for "findtest.txt", as designated by the "-name" option, and then prints the full pathname of the file, as designated by the "-print" option. Incidentally, you <em>must</em> tell "find" to do something on a match, or it won't do anything and will keep right on searching. <p>There are a wide variety of selection criteria. If you just want to print out the directories in a search from your current directory, you can do so with: <bold><pre>   find . -type d -print</pre></bold>You can also find files based on their username, date of last modification, size, and so on. <p>One of the things that makes "find" extremely useful is that not only can you perform searches, you can perform an action when a search has a match, using the "-exec" option. For example, if you want to get the headers of all the files on a match into a single file, you could do so as: <bold><pre>   find . -name log.txt -exec head &gt;&gt; ./log \;</pre></bold>Note how the executed command string is terminated by "\;". <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m8">[8] REGULAR EXPRESSIONS</a></h2><p>* An advanced set of tools allows you to perform searches on text strings in files and, in some cases, manipulate the strings found. These tools are known as "grep", "sed", and "awk" and are based on the concept of a "regular expression", which is a scheme by which specific text patterns can be specified by a set of special or "magic" characters. <p>The simplest regular expression is just the string you are searching for. For example: <bold><pre>   grep Taz *.txt</pre></bold>-- finds every example of the string "Taz" in all files ending in ".txt", then displays the name of the file and the line of text containing the string. <p>But using the magic characters provides much more flexibility. For example: <bold><pre>   grep ^Taz *.txt</pre></bold>-- finds the string "Taz" <em>only</em> if it is at the beginning of the line. Similarly: <bold><pre>   grep Taz$ *.txt</pre></bold>-- matches it <em>only</em> if it is at the end of the line. <p>Now suppose you want to be able to match both "Taz" and "taz". You can do that with: <bold><pre>  [Tt]az</pre></bold>The square brackets ("[]") allow you to specify a range of characters. You can specify a range of values, such as: <bold><pre>   group_[abcdef]</pre></bold>This matches the strings "group_a", "group_b", and so on up to "group_f". This range specification can be simplified to: <bold><pre>   group_[a-f]</pre></bold>Similarly: <bold><pre>   set[0123456789]</pre></bold>-- can be simplified to: <bold><pre>   set[0-9]</pre></bold>If you want to match to all characters <em>except</em> a specific range, you can do that as follows: <bold><pre>   unit_[^xyz]</pre></bold>This matches "unit_a" or "unit_b", but not "unit_x" or "unit_y" or "unit_z". <p>Other magic characters provide a wildcard capability. The "." character can substitute for any single character, while the "*" substitutes for zero or more repetitions of the preceding regular expression. For example: <bold><pre>   _*$</pre></bold>-- matches any line that is padded with spaces to the right margin (for clarity the space character is represented here by a "_"). If you want to match to a magic character as a real item of text, you have to precede it with a "\": <bold><pre>   test\.txt</pre></bold>This matches "test.txt". <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m9">[9] GREP, SED, &amp; AWK</a></h2><p>* Now that we understand regular expressions, we can consider "grep", "sed", and "awk" in more detail. <p>The name "grep" stands for "general regular expression processor" and as noted it searchs a file for matches to a regular expression like "^Taz" or "_*$". It has a few useful options as well. For example: <bold><pre>   grep -v &lt;regular_expression&gt; &lt;file_list&gt;</pre></bold>-- lists all lines that <em>don't</em> match the regular expression. Other options include: <bold><pre>   grep -n      # List line numbers of matches.<br />
   grep -i      # Ignore case.<br />
   grep -l      # Only list file names for a match.</pre></bold>If you are simply searching for strings and not using regular expressions, there is a variation on "grep" called "fgrep" (meaning "fast grep") that searches for matches on strings and runs faster; we used "fgrep" in an earlier example. It uses the same options as described for "grep" above. <p>* The name "sed" stands for "stream editor" and it provides, in general, a search-and-replace capability. Its syntax for this task is as follows: <bold><pre>   sed 's/&lt;regular_expression&gt;/&lt;replacement_string&gt;/[g]' source.txt</pre></bold>The optional "g" parameter specifies a "global" replacement. That is, if you have multiple matches on the same line, "sed" will replace them all. Without the "g" option, it will only replace the first match on that line. <p>For example, to replace the string "flack" with "flak", you would use "sed" as follows: <bold><pre>   sed 's/flack/flak/g' source.txt &gt; output.txt</pre></bold>You can also specify deletion of a string: <bold><pre>   sed 's/bozo/d'</pre></bold>-- or perform substitutions and deletions from a list of such specifications stored in a file: <bold><pre>   sed -f sedcmds.txt source.txt &gt; output.txt</pre></bold>Another useful feature allows you to quit on a pattern match: <bold><pre>   sed '/^Target/q' source.txt &gt; output.txt</pre></bold>-- or append a file to the output after a pattern match: <bold><pre>   sed '/^Target/ r newtext.txt' source.txt &gt; output.txt</pre></bold>The "sed" utility has a wide variety of other options, but a full discussion of its capabilities is beyond the scope of this document. <p>* Finally, "awk" is a full-blown text processing language that looks something like a mad cross between "grep" and "C". In operation, "awk" takes each line of input and performs text processing on it. It recognizes the current line as "$0", with each word in the line recognized as "$1", "$2", "$3", and so on. <p>This means that: <bold><pre>   awk '{ print $0,$0 }' source.txt</pre></bold>-- prints each line with duplicate text. You can specify a regular expression to identify a pattern match. For example, if you want to tally the lines with the word "Taz" on them, you could do that with: <bold><pre>   awk '/Taz/  { taz++ }; END { print taz }' source.txt</pre></bold>The END clause used in this example allows execution of "awk" statements after the line-scanning has been completed. There is also a BEGIN clause that allows execution of "awk" statements before line-scanning begins. <p>You can do very simple or very complicated things with "awk" once you know how it works. Its syntax is much like that of "C", though it is much less finicky to deal with. Details of "awk" are discussed in another Vectorsite document. <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m10">[10] SHELL PROGRAM EXAMPLES</a></h2><p>* The most elementary use of shell programs is to reduce complicated command strings to simpler commands and to provide handy utilities. <p>For example, I can never remember the options for compiling an ANSI C program, so I store them in a script program named "compile": <bold><pre>   cc $1.c -Aa -o $1</pre></bold>Similarly, I like to timestamp my documents in a particular format, so I have a shell program named "td" ("timedate") that invokes "date" as follows: <bold><pre>   date +"date: %A, %d %B %Y %H%M %Z"</pre></bold>This gives, for example: <bold><pre>   date: Friday, 24 November 1995 1340 MST</pre></bold>Another simple example is a shell script to convert file names from uppercase to lowercase: <bold><pre>   for file<br />
   do<br />
     mv $file `echo $file | tr "[A-Z]" "[a-z]"`<br />
   done</pre></bold>In this example, "for" is used to sequence through the file arguments, and of "tr" and back-quoting are used to establish the lower-case name for the file. <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m11">[11] QUICK REFERENCE</a></h2><p>* This final section provides a fast lookup reference for the materials in this document. It is a collection of thumbnail examples and rules that will be cryptic if you haven't read through the text. <p>* Useful commands: <bold><pre>   cat                  # Lists a file or files sequentially.<br />
   cd                   # Change directories.<br />
   chmod +x             # Set execute permissions.<br />
   chmod 666            # Set universal read-write permissions.<br />
   cp                   # Copy files.<br />
   expr 2 + 2           # Add 2 + 2.<br />
   fgrep                # Search for string match.<br />
   grep                 # Search for string pattern matches.<br />
   grep -v              # Search for no match.<br />
   grep -n              # List line numbers of matches.<br />
   grep -i              # Ignore case.<br />
   grep -l              # Only list file names for a match.<br />
   head -5 source.txt   # List first 5 lines.<br />
   ll                   # Give a listing of files with file details.<br />
   ls                   # Give a simple listing of files.<br />
   mkdir                # Make a directory.<br />
   more                 # Displays a file a screenfull at a time.<br />
   mv                   # Move or rename files.<br />
   paste f1 f2          # Paste files by columns.<br />
   pg                   # Variant on "more".<br />
   pwd                  # Print working directory.<br />
   rm                   # Remove files.  <br />
   rm -r                # Remove entire directory subtree.<br />
   rmdir                # Remove a directory.<br />
   sed 's/txt/TXT/g'    # Scan and replace text.<br />
   sed 's/txt/d'        # Scan and delete text.<br />
   sed '/txt/q'         # Scan and then quit.<br />
   sort                 # Sort input.<br />
   sort +1              # Skip first field in sorting. <br />
   sort -n              # Sort numbers. <br />
   sort -r              # Sort in reverse order.<br />
   sort -u              # Eliminate redundant lines in output.<br />
   tail -5 source.txt   # List last 5 lines.<br />
   tail +5 source.txt   # List all lines after line 5.<br />
   tr '[A-Z]' '[a-z]'   # Translate to lowercase.<br />
   tr '[a-z]' '[A-Z]'   # Translate to uppercase.<br />
   tr -d '_'            # Delete underscores.<br />
   uniq                 # Find unique lines. <br />
   wc                   # Word count (characters, words, lines).<br />
   wc -w                # Word count only.<br />
   wc -l                # Line count.</pre></bold>* Elementary shell capabilities: <bold><pre>   shvar="Test 1"       # Initialize a shell variable.<br />
   echo $shvar          # Display a shell variable.<br />
   export shvar         # Allow subshells to use shell variable.<br />
   mv $f ${f}2          # Append "2" to file name in shell variable.<br />
   $1, $2, $3, ...      # Command-line arguments.<br />
   $0                   # Shell-program name.<br />
   $#                   # Number of arguments.<br />
   $*                   # Complete argument list.<br />
   shift 2              # Shift argument variables by 2.<br />
   read v               # Read input into variable "v".<br />
   . mycmds             # Execute commands in file.</pre></bold>* IF statement: <bold><pre>   if [ "$1" = "red" ]<br />
   then<br />
     echo "Illegal code."<br />
     exit<br />
   elif [ "$1" = "blue" ]<br />
   then<br />
     echo "Illegal code."<br />
     exit<br />
   else<br />
     echo "Access granted."<br />
   fi <br />
<br />
   [ "$shvar" = "red" ]     String comparison, true if match.<br />
   [ "$shvar" != "red" ]    String comparison, true if no match.<br />
   [ "$shvar" = "" ]        True if null variable.<br />
   [ "$shvar" != "" ]       True if not null variable.<br />
<br />
   [ "$nval" -eq 0 ]        Integer test; true if equal to 0.<br />
   [ "$nval" -ge 0 ]        Integer test; true if greater than or equal to 0.<br />
   [ "$nval" -gt 0 ]        Integer test; true if greater than 0.<br />
   [ "$nval" -le 0 ]        Integer test; true if less than or equal to 0.<br />
   [ "$nval" -lt 0 ]        Integer test; true if less than to 0.<br />
   [ "$nval" -ne 0 ]        Integer test; true if not equal to 0.<br />
<br />
   [ -d tmp ]               True if "tmp" is a directory.<br />
   [ -f tmp ]               True if "tmp" is an ordinary file.<br />
   [ -r tmp ]               True if "tmp" can be read.<br />
   [ -s tmp ]               True if "tmp" is nonzero length.<br />
   [ -w tmp ]               True if "tmp" can be written.<br />
   [ -x tmp ]               True if "tmp" is executable.</pre></bold>* CASE statement: <bold><pre>   case "$1" <br />
   in<br />
     "red")      echo "Illegal code."<br />
                 exit;;<br />
     "blue")     echo "Illegal code."<br />
                 exit;;<br />
     *)          echo "Access granted.";;<br />
   esac</pre></bold>* Loop statements: <bold><pre>   for nvar in 1 2 3 4 5<br />
   do<br />
     echo $nvar<br />
   done <br />
<br />
   for file            # Cycle through command-line arguments.<br />
   do<br />
     echo $file<br />
   done<br />
<br />
   while [ "$n" != "Joe" ]     # Or:   until [ "$n" = "Joe" ]<br />
   do<br />
     echo "What's your name?"<br />
     read n<br />
     echo $n<br />
   done</pre></bold>There are "break" and "continue" commands that allow you to exit or skip to the end of loops as the need arises. <p><a href="http://www.faqs.org/docs/air/tsshell.html"><bold>BACK_TO_TOP</bold></a> <p><h2><a name="m12">[12] REVISION HISTORY</a></h2><p>* This document was originally written during the 1990s, but I yanked it in 2001 as it didn't seem to be attracting much attention. In the spring of 2003 I retrieved it and put it back up as I realized it offered some value and it made no sense just to keep it archived, gathering dust. <p>Unfortunately, by that time I had lost track of its revision history. For want of anything better to do, I simply gave the resurrected document the initial revcode of "v1.0.0". I believe it is unlikely that any earlier versions of this document are available on the Internet, but since I had switched from a two-digit revcode format ("v1.0") to a three-digit format ("v1.0.0") in the interim, any earlier copies will have a two-digit revcode. <p>* Revision history: <bold><pre>   v1.0.0 / gvg / 01 may 03</pre><br/><br/>tag : <a href="/tag/Command" rel="tag">Command</a>,&nbsp;<a href="/tag/Ubuntu" rel="tag">Ubuntu</a>			 ]]> 
		</description>
		<category>IT</category>
		<category>Command</category>
		<category>Ubuntu</category>

		<comments>http://chammoru.egloos.com/5130676#comments</comments>
		<pubDate>Tue, 24 Nov 2009 02:50:15 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ UTF8 ]]> </title>
		<link>http://chammoru.egloos.com/5121725</link>
		<guid>http://chammoru.egloos.com/5121725</guid>
		<description>
			<![CDATA[ 
  <span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px; "><b><div><a href="http://en.wikipedia.org/wiki/UTF-8">http://en.wikipedia.org/wiki/UTF-8</a></div><div><br />
</div>UTF-8</b>&nbsp;(8-<a href="http://en.wikipedia.org/wiki/Bit" title="Bit" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">bit</a>&nbsp;<a href="http://en.wikipedia.org/wiki/Universal_Character_Set" title="Universal Character Set" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">UCS</a>/<a href="http://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings" title="Comparison of Unicode encodings" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">Unicode Transformation Format</a>) is a&nbsp;<a href="http://en.wikipedia.org/wiki/Variable-width_encoding" title="Variable-width encoding" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">variable-length</a>&nbsp;<a href="http://en.wikipedia.org/wiki/Character_encoding" title="Character encoding" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">character encoding</a>&nbsp;for&nbsp;<a href="http://en.wikipedia.org/wiki/Unicode" title="Unicode" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">Unicode</a>. It is able to represent any character in the Unicode standard, yet is&nbsp;<a href="http://en.wikipedia.org/wiki/Backward_compatibility" title="Backward compatibility" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">backwards compatible</a>&nbsp;with&nbsp;<a href="http://en.wikipedia.org/wiki/ASCII" title="ASCII" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">ASCII</a>. For these reasons, it is steadily becoming the preferred encoding for&nbsp;<a href="http://en.wikipedia.org/wiki/E-mail" title="E-mail" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">e-mail</a>,&nbsp;<a href="http://en.wikipedia.org/wiki/Web_page" title="Web page" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">web pages</a>,<sup id="cite_ref-GoogleUnicode_0-0" class="reference" style="line-height: 1em; font-weight: normal; font-style: normal; "><a href="http://en.wikipedia.org/wiki/UTF-8#cite_note-GoogleUnicode-0" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; white-space: nowrap; background-position: initial initial; "><span>[</span>1<span>]</span></a></sup><sup id="cite_ref-W3TechsUTF8_1-0" class="reference" style="line-height: 1em; font-weight: normal; font-style: normal; "><a href="http://en.wikipedia.org/wiki/UTF-8#cite_note-W3TechsUTF8-1" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; white-space: nowrap; background-position: initial initial; "><span>[</span>2<span>]</span></a></sup>&nbsp;and other places where characters are&nbsp;<a href="http://en.wikipedia.org/wiki/Computer_data_storage" title="Computer data storage" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">stored</a>&nbsp;or&nbsp;<a href="http://en.wikipedia.org/wiki/Stream_(computing)" title="Stream (computing)" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">streamed</a>.</span><div><font class="Apple-style-span" face="sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px; line-height: 19px; "><br />
</span></font></div><div><font class="Apple-style-span" face="sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"><h2 style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); font-size: 19px; background-position: initial initial; "><span class="mw-headline" id="Description">Description</span></h2><p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; ">The UTF-8 encoding is variable-width, ranging from 1–4 bytes. Each byte has 0–4 leading 1 bits followed by a zero bit to indicate its type. N 1 bits indicates the first byte in a N-byte sequence, with the exception that zero 1 bits indicates a one-byte sequence while one 1 bit indicates a continuation byte in a multi-byte sequence (this was done for ASCII compatibility). The scalar value of the Unicode&nbsp;<a href="http://en.wikipedia.org/wiki/Code_point" title="Code point" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">code point</a>&nbsp;is the concatenation of the non-control bits. In this table, zeroes and ones represent control bits,&nbsp;<code style="background-color: rgb(249, 249, 249); ">x</code>-s represent the lowest 8 bits of the Unicode value,&nbsp;<code style="background-color: rgb(249, 249, 249); ">y</code>-s represent the next higher 8 bits, and&nbsp;<code style="background-color: rgb(249, 249, 249); ">z</code>-s represent the bits higher than that.</p></span></font></div><br /><br /><table class="wikitable" style="font-size: 13px; color: black; background-color: rgb(249, 249, 249); margin-top: 1em; margin-right: 1em; margin-bottom: 1em; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-collapse: collapse; "><tbody><tr><th style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); background-color: rgb(242, 242, 242); text-align: center; ">Unicode</th><th style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); background-color: rgb(242, 242, 242); text-align: center; ">Byte1</th><th style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); background-color: rgb(242, 242, 242); text-align: center; ">Byte2</th><th style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); background-color: rgb(242, 242, 242); text-align: center; ">Byte3</th><th style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); background-color: rgb(242, 242, 242); text-align: center; ">Byte4</th><th style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); background-color: rgb(242, 242, 242); text-align: center; ">example</th></tr><tr><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">U+0000?U+007F</code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">0<i>xxxxxxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; ">'$'&nbsp;<code style="background-color: rgb(249, 249, 249); ">U+00<u>2</u>4</code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">0<b><u>010</u>0100</b></code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">0x24</code></td></tr><tr><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">U+0080?U+07FF</code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">110<i>yyyxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">10<i>xxxxxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; ">'￠'&nbsp;<code style="background-color: rgb(249, 249, 249); ">U+00<u>A</u>2</code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">110<b>000<u>10</u></b>,10<b><u>10</u>0010</b></code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">0xC2,0xA2</code></td></tr><tr><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">U+0800?U+FFFF</code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">1110<i>yyyy</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">10<i>yyyyxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">10<i>xxxxxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; ">'€'&nbsp;<code style="background-color: rgb(249, 249, 249); ">U+<u>2</u>0<u>A</u>C</code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">1110<b><u>0010</u></b>,10<b>0000<u>10</u></b>,10<b><u>10</u>1100</b></code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">0xE2,0x82,0xAC</code></td></tr><tr><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">U+10000?U+10FFFF</code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">11110<i>zzz</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">10<i>zzyyyy</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">10<i>yyyyxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "><code style="background-color: rgb(249, 249, 249); ">10<i>xxxxxx</i></code></td><td style="border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; ">'??'&nbsp;<code style="background-color: rgb(249, 249, 249); ">U+<u>0</u>2<u>4</u>B<u>6</u>2</code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">11110<b><u>0</u>00</b>,10<b>10<u>0100</u></b>,10<b>1011<u>01</u></b>,10<b><u>10</u>0010</b></code><br />
→&nbsp;<code style="background-color: rgb(249, 249, 249); ">0xF0,0xA4,0xAD,0xA2<br />
<br />
</code></td></tr></tbody></table><br/><br/>tag : <a href="/tag/Codec" rel="tag">Codec</a>			 ]]> 
		</description>
		<category>IT</category>
		<category>Codec</category>

		<comments>http://chammoru.egloos.com/5121725#comments</comments>
		<pubDate>Fri, 13 Nov 2009 06:53:11 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ flac spec & decoder ]]> </title>
		<link>http://chammoru.egloos.com/5118206</link>
		<guid>http://chammoru.egloos.com/5118206</guid>
		<description>
			<![CDATA[ 
  <a href="http://flac.sourceforge.net/format.html">http://flac.sourceforge.net/format.html</a><br />
<br />
1. read spec.<div>http://en.wikipedia.org/wiki/Universal_code_(data_compression)<br />
http://en.wikipedia.org/wiki/Golomb_coding</div><div>http://en.wikipedia.org/wiki/UTF-8<br />
<div>http://en.wikipedia.org/wiki/Cyclic_redundancy_check</div><div><br />
2. analyze source code (mplayer or ...)<br />
http://www5.mplayerhq.hu/design7/news.html</div></div><br/><br/>tag : <a href="/tag/Codec" rel="tag">Codec</a>			 ]]> 
		</description>
		<category>IT</category>
		<category>Codec</category>

		<comments>http://chammoru.egloos.com/5118206#comments</comments>
		<pubDate>Mon, 09 Nov 2009 11:33:12 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Using RVDS Debugger v3.1 ]]> </title>
		<link>http://chammoru.egloos.com/5110877</link>
		<guid>http://chammoru.egloos.com/5110877</guid>
		<description>
			<![CDATA[ 
  0. Execute [RealView Debugger]<br />
<br />
1. Connect target<br />
[Target] -&gt; [Connect to Target]<br />
Select the the Arm architecture you are using.<br />
<br />
2. Open executable file<br />
[Target] -&gt; [Load Image]<br />
Select '*.axf'<br />
<br />
3. Set break point (2 ways)<br />
i) [View] -&gt; [Symbols]<br />
Find the symbol to set break-point and set break-point to it<br />
ii) In the command window:<br />
<strong>break jpgd_idct</strong> or <br />
<strong>binstr S:0x00011B14</strong><br />
<br />
4. Run (F5)<br />
<br />
-- Other Tips --<br />
1. On RVCT 3.1 version, setting 'd' register by setreg command, like<br />
setreg @d0=0x0000000000000034<br />
makes wrong result.<br />
<br />
2. command etc.<br />
> reset<br />
> load/r 'W:\SVN\jpg\app\jpgd_test.axf'<br />
> break jpgd_idct<br />
> go			 ]]> 
		</description>
		<category>IT</category>

		<comments>http://chammoru.egloos.com/5110877#comments</comments>
		<pubDate>Sun, 01 Nov 2009 04:30:36 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ How to use 'fromelf' ]]> </title>
		<link>http://chammoru.egloos.com/5103640</link>
		<guid>http://chammoru.egloos.com/5103640</guid>
		<description>
			<![CDATA[ 
  <p>$ fromelf -c file.o<br>This command is similar to objdump<br><br>--<br>ARM FromELF, RVCT3.1 [Build 640]</p><p>ARM Executable ELF file translator<br>fromelf [options] input_file</p><p>Options:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display this help screen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --vsn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display version information<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --output file&nbsp; the output file. (defaults to stdout for -text format)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --nodebug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do not put debug areas in the output image<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --nolinkview&nbsp;&nbsp; do not put sections in the output image</p><p>Binary Output Formats:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --bin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plain Binary<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --m32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Motorola 32 bit Hex<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --i32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Intel 32 bit Hex<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --vhx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Byte Oriented Hex format</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --base addr&nbsp;&nbsp;&nbsp; Optionally set base address for m32,i32</p><p>Output Formats Requiring Debug Information<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --fieldoffsets Assembly Language Description of Structures/Classes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --expandarrays Arrays inside and outside structures are expanded</p><p>Other Output Formats:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --elf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELF<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text Information</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flags for Text Information<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; verbose<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print data addresses (For images built with debug)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disassemble code<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print contents of data section<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print exception tables<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -g&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print debug tables<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print relocation information<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print symbol table<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print string table<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print dynamic segment contents<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print code and data size information</p><br/><br/>tag : <a href="/tag/ARM" rel="tag">ARM</a>			 ]]> 
		</description>
		<category>ARM</category>

		<comments>http://chammoru.egloos.com/5103640#comments</comments>
		<pubDate>Fri, 23 Oct 2009 09:54:54 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ GCC Documents ]]> </title>
		<link>http://chammoru.egloos.com/5102650</link>
		<guid>http://chammoru.egloos.com/5102650</guid>
		<description>
			<![CDATA[ 
  From: <a href="http://gcc.gnu.org/onlinedocs/gcc/">http://gcc.gnu.org/onlinedocs/gcc/</a><br><br>This file documents the use of the GNU compilers. <pre class="sp"></pre>Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. <p>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being “Funding Free Software”, the Front-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled “GNU Free Documentation License”. <p>(a) The FSF's Front-Cover Text is: <p>A GNU Manual <p>(b) The FSF's Back-Cover Text is: <p>You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. <pre class="sp"></pre><div class="shortcontents"><h2>Short Contents</h2><ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Top">Introduction</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_G_002b_002b-and-GCC">1 Programming Languages Supported by GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Standards">2 Language Standards Supported by GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Invoking-GCC">3 GCC Command Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_C-Implementation">4 C Implementation-defined behavior</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_C_002b_002b-Implementation">5 C++ Implementation-defined behavior</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_C-Extensions">6 Extensions to the C Language Family</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_C_002b_002b-Extensions">7 Extensions to the C++ Language</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Objective_002dC">8 GNU Objective-C runtime features</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Compatibility">9 Binary Compatibility</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Gcov">10 <samp><span class="command">gcov</span></samp>—a Test Coverage Program</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Trouble">11 Known Causes of Trouble with GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Bugs">12 Reporting Bugs</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Service">13 How To Get Help with GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Contributing">14 Contributing to GCC Development</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Funding">Funding Free Software</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_GNU-Project">The GNU Project and GNU/Linux</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Copying">GNU General Public License</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_GNU-Free-Documentation-License">GNU Free Documentation License</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Contributors">Contributors to GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Option-Index">Option Index</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Keyword-Index">Keyword Index</a> </li></ul></div><div class="contents"><h2>Table of Contents</h2><ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/index.html#Top" name="toc_Top">Introduction</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/G_002b_002b-and-GCC.html#G_002b_002b-and-GCC" name="toc_G_002b_002b-and-GCC">1 Programming Languages Supported by GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards" name="toc_Standards">2 Language Standards Supported by GCC</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards">2.1 C language</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards">2.2 C++ language</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards">2.3 Objective-C and Objective-C++ languages</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-GCC.html#Invoking-GCC" name="toc_Invoking-GCC">3 GCC Command Options</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html#Option-Summary">3.1 Option Summary</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options">3.2 Options Controlling the Kind of Output</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b">3.3 Compiling C++ Programs</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options">3.4 Options Controlling C Dialect</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#C_002b_002b-Dialect-Options">3.5 Options Controlling C++ Dialect</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html#Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options">3.6 Options Controlling Objective-C and Objective-C++ Dialects</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html#Language-Independent-Options">3.7 Options to Control Diagnostic Messages Formatting</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options">3.8 Options to Request or Suppress Warnings</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options">3.9 Options for Debugging Your Program or GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options">3.10 Options That Control Optimization</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options">3.11 Options Controlling the Preprocessor</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Assembler-Options.html#Assembler-Options">3.12 Passing Options to the Assembler</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options">3.13 Options for Linking</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html#Directory-Options">3.14 Options for Directory Search</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html#Spec-Files">3.15 Specifying subprocesses and the switches to pass to them</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Target-Options.html#Target-Options">3.16 Specifying Target Machine and Compiler Version</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html#Submodel-Options">3.17 Hardware Models and Configurations</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARC-Options.html#ARC-Options">3.17.1 ARC Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options">3.17.2 ARM Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html#AVR-Options">3.17.3 AVR Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Blackfin-Options.html#Blackfin-Options">3.17.4 Blackfin Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/CRIS-Options.html#CRIS-Options">3.17.5 CRIS Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/CRX-Options.html#CRX-Options">3.17.6 CRX Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html#Darwin-Options">3.17.7 Darwin Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html#DEC-Alpha-Options">3.17.8 DEC Alpha Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha_002fVMS-Options.html#DEC-Alpha_002fVMS-Options">3.17.9 DEC Alpha/VMS Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/FR30-Options.html#FR30-Options">3.17.10 FR30 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/FRV-Options.html#FRV-Options">3.17.11 FRV Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/GNU_002fLinux-Options.html#GNU_002fLinux-Options">3.17.12 GNU/Linux Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/H8_002f300-Options.html#H8_002f300-Options">3.17.13 H8/300 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/HPPA-Options.html#HPPA-Options">3.17.14 HPPA Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options">3.17.15 Intel 386 and AMD x86-64 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/IA_002d64-Options.html#IA_002d64-Options">3.17.16 IA-64 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/IA_002d64_002fVMS-Options.html#IA_002d64_002fVMS-Options">3.17.17 IA-64/VMS Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/M32C-Options.html#M32C-Options">3.17.18 M32C Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/M32R_002fD-Options.html#M32R_002fD-Options">3.17.19 M32R/D Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/M680x0-Options.html#M680x0-Options">3.17.20 M680x0 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/M68hc1x-Options.html#M68hc1x-Options">3.17.21 M68hc1x Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MCore-Options.html#MCore-Options">3.17.22 MCore Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MeP-Options.html#MeP-Options">3.17.23 MeP Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MIPS-Options.html#MIPS-Options">3.17.24 MIPS Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MMIX-Options.html#MMIX-Options">3.17.25 MMIX Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MN10300-Options.html#MN10300-Options">3.17.26 MN10300 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/PDP_002d11-Options.html#PDP_002d11-Options">3.17.27 PDP-11 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/picoChip-Options.html#picoChip-Options">3.17.28 picoChip Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/PowerPC-Options.html#PowerPC-Options">3.17.29 PowerPC Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html#RS_002f6000-and-PowerPC-Options">3.17.30 IBM RS/6000 and PowerPC Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/S_002f390-and-zSeries-Options.html#S_002f390-and-zSeries-Options">3.17.31 S/390 and zSeries Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Score-Options.html#Score-Options">3.17.32 Score Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/SH-Options.html#SH-Options">3.17.33 SH Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html#SPARC-Options">3.17.34 SPARC Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/SPU-Options.html#SPU-Options">3.17.35 SPU Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/System-V-Options.html#System-V-Options">3.17.36 Options for System V</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/V850-Options.html#V850-Options">3.17.37 V850 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/VAX-Options.html#VAX-Options">3.17.38 VAX Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/VxWorks-Options.html#VxWorks-Options">3.17.39 VxWorks Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/x86_002d64-Options.html#x86_002d64-Options">3.17.40 x86-64 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Windows-Options.html#i386-and-x86_002d64-Windows-Options">3.17.41 i386 and x86-64 Windows Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Xstormy16-Options.html#Xstormy16-Options">3.17.42 Xstormy16 Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Xtensa-Options.html#Xtensa-Options">3.17.43 Xtensa Options</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/zSeries-Options.html#zSeries-Options">3.17.44 zSeries Options</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">3.18 Options for Code Generation Conventions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html#Environment-Variables">3.19 Environment Variables Affecting GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html#Precompiled-Headers">3.20 Using Precompiled Headers</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/C-Implementation.html#C-Implementation" name="toc_C-Implementation">4 C Implementation-defined behavior</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Translation-implementation.html#Translation-implementation">4.1 Translation</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Environment-implementation.html#Environment-implementation">4.2 Environment</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Identifiers-implementation.html#Identifiers-implementation">4.3 Identifiers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Characters-implementation.html#Characters-implementation">4.4 Characters</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html#Integers-implementation">4.5 Integers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Floating-point-implementation.html#Floating-point-implementation">4.6 Floating point</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Arrays-and-pointers-implementation.html#Arrays-and-pointers-implementation">4.7 Arrays and pointers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Hints-implementation.html#Hints-implementation">4.8 Hints</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Structures-unions-enumerations-and-bit_002dfields-implementation.html#Structures-unions-enumerations-and-bit_002dfields-implementation">4.9 Structures, unions, enumerations, and bit-fields</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Qualifiers-implementation.html#Qualifiers-implementation">4.10 Qualifiers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Declarators-implementation.html#Declarators-implementation">4.11 Declarators</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Statements-implementation.html#Statements-implementation">4.12 Statements</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Preprocessing-directives-implementation.html#Preprocessing-directives-implementation">4.13 Preprocessing directives</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Library-functions-implementation.html#Library-functions-implementation">4.14 Library functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Architecture-implementation.html#Architecture-implementation">4.15 Architecture</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Locale_002dspecific-behavior-implementation.html#Locale_002dspecific-behavior-implementation">4.16 Locale-specific behavior</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Implementation.html#C_002b_002b-Implementation" name="toc_C_002b_002b-Implementation">5 C++ Implementation-defined behavior</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Conditionally_002dsupported-behavior.html#Conditionally_002dsupported-behavior">5.1 Conditionally-supported behavior</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions" name="toc_C-Extensions">6 Extensions to the C Language Family</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement-Exprs">6.1 Statements and Declarations in Expressions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Local-Labels.html#Local-Labels">6.2 Locally Declared Labels</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values">6.3 Labels as Values</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html#Nested-Functions">6.4 Nested Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html#Constructing-Calls">6.5 Constructing Function Calls</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Typeof.html#Typeof">6.6 Referring to a Type with <code>typeof</code></a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals">6.7 Conditionals with Omitted Operands</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Long-Long.html#Long-Long">6.8 Double-Word Integers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Complex.html#Complex">6.9 Complex Numbers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html#Floating-Types">6.10 Additional Floating Types</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Half_002dPrecision.html#Half_002dPrecision">6.11 Half-Precision Floating Point</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html#Decimal-Float">6.12 Decimal Floating Types</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Hex-Floats.html#Hex-Floats">6.13 Hex Floats</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Fixed_002dPoint.html#Fixed_002dPoint">6.14 Fixed-Point Types</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html#Zero-Length">6.15 Arrays of Length Zero</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Empty-Structures.html#Empty-Structures">6.16 Structures With No Members</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html#Variable-Length">6.17 Arrays of Variable Length</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html#Variadic-Macros">6.18 Macros with a Variable Number of Arguments.</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Escaped-Newlines.html#Escaped-Newlines">6.19 Slightly Looser Rules for Escaped Newlines</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Subscripting.html#Subscripting">6.20 Non-Lvalue Arrays May Have Subscripts</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html#Pointer-Arith">6.21 Arithmetic on <code>void</code>- and Function-Pointers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Initializers.html#Initializers">6.22 Non-Constant Initializers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Compound-Literals.html#Compound-Literals">6.23 Compound Literals</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated-Inits">6.24 Designated Initializers</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html#Case-Ranges">6.25 Case Ranges</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Cast-to-Union.html#Cast-to-Union">6.26 Cast to a Union Type</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html#Mixed-Declarations">6.27 Mixed Declarations and Code</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes">6.28 Declaring Attributes of Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute-Syntax">6.29 Attribute Syntax</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Prototypes.html#Function-Prototypes">6.30 Prototypes and Old-Style Function Definitions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Comments.html#C_002b_002b-Comments">6.31 C++ Style Comments</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html#Dollar-Signs">6.32 Dollar Signs in Identifier Names</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Character-Escapes.html#Character-Escapes">6.33 The Character &lt;ESC&gt; in Constants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Alignment.html#Alignment">6.34 Inquiring on Alignment of Types or Variables</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35 Specifying Attributes of Variables</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.1 Blackfin Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.2 M32R/D Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.3 MeP Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.4 i386 Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.5 PowerPC Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.6 SPU Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.7 Xstormy16 Variable Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes">6.35.8 AVR Variable Attributes</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes">6.36 Specifying Attributes of Types</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes">6.36.1 ARM Type Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes">6.36.2 MeP Type Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes">6.36.3 i386 Type Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes">6.36.4 PowerPC Type Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes">6.36.5 SPU Type Attributes</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Inline.html#Inline">6.37 An Inline Function is As Fast As a Macro</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm">6.38 Assembler Instructions with C Expression Operands</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm">6.38.1 Size of an <code>asm</code></a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm">6.38.2 i386 floating point asm operands</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Constraints.html#Constraints">6.39 Constraints for <code>asm</code> Operands</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Simple-Constraints.html#Simple-Constraints">6.39.1 Simple Constraints</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Multi_002dAlternative.html#Multi_002dAlternative">6.39.2 Multiple Alternative Constraints</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Modifiers.html#Modifiers">6.39.3 Constraint Modifier Characters</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html#Machine-Constraints">6.39.4 Constraints for Particular Machines</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Asm-Labels.html#Asm-Labels">6.40 Controlling Names Used in Assembler Code</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Explicit-Reg-Vars.html#Explicit-Reg-Vars">6.41 Variables in Specified Registers</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars">6.41.1 Defining Global Register Variables</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Local-Reg-Vars.html#Local-Reg-Vars">6.41.2 Specifying Registers for Local Variables</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html#Alternate-Keywords">6.42 Alternate Keywords</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Incomplete-Enums.html#Incomplete-Enums">6.43 Incomplete <code>enum</code> Types</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html#Function-Names">6.44 Function Names as Strings</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html#Return-Address">6.45 Getting the Return or Frame Address of a Function</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html#Vector-Extensions">6.46 Using vector instructions through built-in functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Offsetof.html#Offsetof">6.47 Offsetof</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html#Atomic-Builtins">6.48 Built-in functions for atomic memory access</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html#Object-Size-Checking">6.49 Object Size Checking Builtins</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#Other-Builtins">6.50 Other built-in functions provided by GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Target-Builtins.html#Target-Builtins">6.51 Built-in Functions Specific to Particular Target Machines</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Alpha-Built_002din-Functions.html#Alpha-Built_002din-Functions">6.51.1 Alpha Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-iWMMXt-Built_002din-Functions.html#ARM-iWMMXt-Built_002din-Functions">6.51.2 ARM iWMMXt Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3 ARM NEON Intrinsics</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.1 Addition</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.2 Multiplication</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.3 Multiply-accumulate</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.4 Multiply-subtract</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.5 Subtraction</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.6 Comparison (equal-to)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.7 Comparison (greater-than-or-equal-to)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.8 Comparison (less-than-or-equal-to)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.9 Comparison (greater-than)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.10 Comparison (less-than)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.11 Comparison (absolute greater-than-or-equal-to)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.12 Comparison (absolute less-than-or-equal-to)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.13 Comparison (absolute greater-than)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.14 Comparison (absolute less-than)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.15 Test bits</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.16 Absolute difference</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.17 Absolute difference and accumulate</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.18 Maximum</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.19 Minimum</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.20 Pairwise add</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.21 Pairwise add, single_opcode widen and accumulate</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.22 Folding maximum</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.23 Folding minimum</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.24 Reciprocal step</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.25 Vector shift left</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.26 Vector shift left by constant</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.27 Vector shift right by constant</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.28 Vector shift right by constant and accumulate</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.29 Vector shift right and insert</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.30 Vector shift left and insert</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.31 Absolute value</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.32 Negation</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.33 Bitwise not</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.34 Count leading sign bits</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.35 Count leading zeros</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.36 Count number of set bits</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.37 Reciprocal estimate</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.38 Reciprocal square-root estimate</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.39 Get lanes from a vector</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.40 Set lanes in a vector</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.41 Create vector from literal bit pattern</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.42 Set all lanes to the same value</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.43 Combining vectors</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.44 Splitting vectors</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.45 Conversions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.46 Move, single_opcode narrowing</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.47 Move, single_opcode long</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.48 Table lookup</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.49 Extended table lookup</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.50 Multiply, lane</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.51 Long multiply, lane</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.52 Saturating doubling long multiply, lane</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.53 Saturating doubling multiply high, lane</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.54 Multiply-accumulate, lane</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.55 Multiply-subtract, lane</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.56 Vector multiply by scalar</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.57 Vector long multiply by scalar</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.58 Vector saturating doubling long multiply by scalar</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.59 Vector saturating doubling multiply high by scalar</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.60 Vector multiply-accumulate by scalar</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.61 Vector multiply-subtract by scalar</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.62 Vector extract</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.63 Reverse elements</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.64 Bit selection</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.65 Transpose elements</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.66 Zip elements</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.67 Unzip elements</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.68 Element/structure loads, VLD1 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.69 Element/structure stores, VST1 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.70 Element/structure loads, VLD2 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.71 Element/structure stores, VST2 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.72 Element/structure loads, VLD3 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.73 Element/structure stores, VST3 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.74 Element/structure loads, VLD4 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.75 Element/structure stores, VST4 variants</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.76 Logical operations (AND)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.77 Logical operations (OR)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.78 Logical operations (exclusive OR)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.79 Logical operations (AND-NOT)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.80 Logical operations (OR-NOT)</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html#ARM-NEON-Intrinsics">6.51.3.81 Reinterpret casts</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Blackfin-Built_002din-Functions.html#Blackfin-Built_002din-Functions">6.51.4 Blackfin Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/FR_002dV-Built_002din-Functions.html#FR_002dV-Built_002din-Functions">6.51.5 FR-V Built-in Functions</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Argument-Types.html#Argument-Types">6.51.5.1 Argument Types</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Directly_002dmapped-Integer-Functions.html#Directly_002dmapped-Integer-Functions">6.51.5.2 Directly-mapped Integer Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Directly_002dmapped-Media-Functions.html#Directly_002dmapped-Media-Functions">6.51.5.3 Directly-mapped Media Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Raw-read_002fwrite-Functions.html#Raw-read_002fwrite-Functions">6.51.5.4 Raw read/write Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Other-Built_002din-Functions.html#Other-Built_002din-Functions">6.51.5.5 Other Built-in Functions</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/X86-Built_002din-Functions.html#X86-Built_002din-Functions">6.51.6 X86 Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MIPS-DSP-Built_002din-Functions.html#MIPS-DSP-Built_002din-Functions">6.51.7 MIPS DSP Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MIPS-Paired_002dSingle-Support.html#MIPS-Paired_002dSingle-Support">6.51.8 MIPS Paired-Single Support</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MIPS-Loongson-Built_002din-Functions.html#MIPS-Loongson-Built_002din-Functions">6.51.9 MIPS Loongson Built-in Functions</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Paired_002dSingle-Arithmetic.html#Paired_002dSingle-Arithmetic">6.51.9.1 Paired-Single Arithmetic</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Paired_002dSingle-Built_002din-Functions.html#Paired_002dSingle-Built_002din-Functions">6.51.9.2 Paired-Single Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MIPS_002d3D-Built_002din-Functions.html#MIPS_002d3D-Built_002din-Functions">6.51.9.3 MIPS-3D Built-in Functions</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/picoChip-Built_002din-Functions.html#picoChip-Built_002din-Functions">6.51.10 picoChip Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Other-MIPS-Built_002din-Functions.html#Other-MIPS-Built_002din-Functions">6.51.11 Other MIPS Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/PowerPC-AltiVec_002fVSX-Built_002din-Functions.html#PowerPC-AltiVec_002fVSX-Built_002din-Functions">6.51.12 PowerPC AltiVec Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/SPARC-VIS-Built_002din-Functions.html#SPARC-VIS-Built_002din-Functions">6.51.13 SPARC VIS Built-in Functions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/SPU-Built_002din-Functions.html#SPU-Built_002din-Functions">6.51.14 SPU Built-in Functions</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Target-Format-Checks.html#Target-Format-Checks">6.52 Format Checks Specific to Particular Target Machines</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Solaris-Format-Checks.html#Solaris-Format-Checks">6.52.1 Solaris Format Checks</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html#Pragmas">6.53 Pragmas Accepted by GCC</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-Pragmas.html#ARM-Pragmas">6.53.1 ARM Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/M32C-Pragmas.html#M32C-Pragmas">6.53.2 M32C Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/MeP-Pragmas.html#MeP-Pragmas">6.53.3 MeP Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Pragmas.html#RS_002f6000-and-PowerPC-Pragmas">6.53.4 RS/6000 and PowerPC Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Darwin-Pragmas.html#Darwin-Pragmas">6.53.5 Darwin Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Solaris-Pragmas.html#Solaris-Pragmas">6.53.6 Solaris Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Symbol_002dRenaming-Pragmas.html#Symbol_002dRenaming-Pragmas">6.53.7 Symbol-Renaming Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html#Structure_002dPacking-Pragmas">6.53.8 Structure-Packing Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Weak-Pragmas.html#Weak-Pragmas">6.53.9 Weak Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas">6.53.10 Diagnostic Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Visibility-Pragmas.html#Visibility-Pragmas">6.53.11 Visibility Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Push_002fPop-Macro-Pragmas.html#Push_002fPop-Macro-Pragmas">6.53.12 Push/Pop Macro Pragmas</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas">6.53.13 Function Specific Option Pragmas</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed-Fields">6.54 Unnamed struct/union fields within structs/unions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Thread_002dLocal.html#Thread_002dLocal">6.55 Thread-Local Storage</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/C99-Thread_002dLocal-Edits.html#C99-Thread_002dLocal-Edits">6.55.1 ISO/IEC 9899:1999 Edits for Thread-Local Storage</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b98-Thread_002dLocal-Edits.html#C_002b_002b98-Thread_002dLocal-Edits">6.55.2 ISO/IEC 14882:1998 Edits for Thread-Local Storage</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html#Binary-constants">6.56 Binary constants using the `<samp><span class="samp">0b</span></samp>' prefix</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html#C_002b_002b-Extensions" name="toc_C_002b_002b-Extensions">7 Extensions to the C++ Language</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Volatiles.html#Volatiles">7.1 When is a Volatile Object Accessed?</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html#Restricted-Pointers">7.2 Restricting Pointer Aliasing</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html#Vague-Linkage">7.3 Vague Linkage</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Interface.html#C_002b_002b-Interface">7.4 #pragma interface and implementation</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html#Template-Instantiation">7.5 Where's the Template?</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Bound-member-functions.html#Bound-member-functions">7.6 Extracting the function pointer from a bound pointer to member function</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html#C_002b_002b-Attributes">7.7 C++-Specific Variable, Function, and Type Attributes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">7.8 Namespace Association</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html#Type-Traits">7.9 Type Traits</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Java-Exceptions.html#Java-Exceptions">7.10 Java Exceptions</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Deprecated-Features.html#Deprecated-Features">7.11 Deprecated Features</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Backwards-Compatibility.html#Backwards-Compatibility">7.12 Backwards Compatibility</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC.html#Objective_002dC" name="toc_Objective_002dC">8 GNU Objective-C runtime features</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Executing-code-before-main.html#Executing-code-before-main">8.1 <code>+load</code>: Executing code before main</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/What-you-can-and-what-you-cannot-do-in-_002bload.html#What-you-can-and-what-you-cannot-do-in-_002bload">8.1.1 What you can and what you cannot do in <code>+load</code></a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-encoding.html#Type-encoding">8.2 Type encoding</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Garbage-Collection.html#Garbage-Collection">8.3 Garbage Collection</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Constant-string-objects.html#Constant-string-objects">8.4 Constant string objects</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/compatibility_005falias.html#compatibility_005falias">8.5 compatibility_alias</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Compatibility.html#Compatibility" name="toc_Compatibility">9 Binary Compatibility</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Gcov.html#Gcov" name="toc_Gcov">10 <samp><span class="command">gcov</span></samp>—a Test Coverage Program</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Gcov-Intro.html#Gcov-Intro">10.1 Introduction to <samp><span class="command">gcov</span></samp></a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-Gcov.html#Invoking-Gcov">10.2 Invoking <samp><span class="command">gcov</span></samp></a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Gcov-and-Optimization.html#Gcov-and-Optimization">10.3 Using <samp><span class="command">gcov</span></samp> with GCC Optimization</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html#Gcov-Data-Files">10.4 Brief description of <samp><span class="command">gcov</span></samp> data files</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Cross_002dprofiling.html#Cross_002dprofiling">10.5 Data file relocation to support cross-profiling</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Trouble.html#Trouble" name="toc_Trouble">11 Known Causes of Trouble with GCC</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Actual-Bugs.html#Actual-Bugs">11.1 Actual Bugs We Haven't Fixed Yet</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Cross_002dCompiler-Problems.html#Cross_002dCompiler-Problems">11.2 Cross-Compiler Problems</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Interoperation.html#Interoperation">11.3 Interoperation</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Incompatibilities.html#Incompatibilities">11.4 Incompatibilities of GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Fixed-Headers.html#Fixed-Headers">11.5 Fixed Header Files</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Standard-Libraries.html#Standard-Libraries">11.6 Standard Libraries</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Disappointments.html#Disappointments">11.7 Disappointments and Misunderstandings</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Misunderstandings.html#C_002b_002b-Misunderstandings">11.8 Common Misunderstandings with GNU C++</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Static-Definitions.html#Static-Definitions">11.8.1 Declare <em>and</em> Define Static Members</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Name-lookup.html#Name-lookup">11.8.2 Name lookup, templates, and accessing members of base classes</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Temporaries.html#Temporaries">11.8.3 Temporaries May Vanish Before You Expect</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Copy-Assignment.html#Copy-Assignment">11.8.4 Implicit Copy-Assignment for Virtual Bases</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Non_002dbugs.html#Non_002dbugs">11.9 Certain Changes We Don't Want to Make</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Warnings-and-Errors.html#Warnings-and-Errors">11.10 Warning Messages and Error Messages</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Bugs.html#Bugs" name="toc_Bugs">12 Reporting Bugs</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Bug-Criteria.html#Bug-Criteria">12.1 Have You Found a Bug?</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Bug-Reporting.html#Bug-Reporting">12.2 How and where to Report Bugs</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Service.html#Service" name="toc_Service">13 How To Get Help with GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Contributing.html#Contributing" name="toc_Contributing">14 Contributing to GCC Development</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Funding.html#Funding" name="toc_Funding">Funding Free Software</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/GNU-Project.html#GNU-Project" name="toc_GNU-Project">The GNU Project and GNU/Linux</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Copying.html#Copying" name="toc_Copying">GNU General Public License</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" name="toc_GNU-Free-Documentation-License">GNU Free Documentation License</a> <ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">ADDENDUM: How to use this License for your documents</a> </li></ul><li><a href="http://gcc.gnu.org/onlinedocs/gcc/Contributors.html#Contributors" name="toc_Contributors">Contributors to GCC</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Option-Index.html#Option-Index" name="toc_Option-Index">Option Index</a> <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Keyword-Index.html#Keyword-Index" name="toc_Keyword-Index">Keyword Index</a> </li></ul></div><div class="node"><p><a name="Top"></a>Next:&nbsp;<a accesskey="n" href="http://gcc.gnu.org/onlinedocs/gcc/G_002b_002b-and-GCC.html#G_002b_002b-and-GCC" rel="next">G++ and GCC</a>, Up:&nbsp;<a accesskey="u" href="http://gcc.gnu.org/onlinedocs/index.html#DIR" rel="up">(DIR)</a> <hr></div><h2 class="unnumbered">Introduction</h2><p><a name="index-introduction-1"></a>This manual documents how to use the GNU compilers, as well as their features and incompatibilities, and how to report bugs. It corresponds to the compilers (GCC) version 4.5.0. The internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages, are documented in a separate manual. See <a href="http://gcc.gnu.org/onlinedocs/gccint/index.html#Top">Introduction</a>. <ul class="menu"><li><a accesskey="1" href="http://gcc.gnu.org/onlinedocs/gcc/G_002b_002b-and-GCC.html#G_002b_002b-and-GCC">G++ and GCC</a>: You can compile C or C++ programs. <li><a accesskey="2" href="http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards">Standards</a>: Language standards supported by GCC. <li><a accesskey="3" href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-GCC.html#Invoking-GCC">Invoking GCC</a>: Command options supported by `<samp><span class="samp">gcc</span></samp>'. <li><a accesskey="4" href="http://gcc.gnu.org/onlinedocs/gcc/C-Implementation.html#C-Implementation">C Implementation</a>: How GCC implements the ISO C specification. <li><a accesskey="5" href="http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions">C Extensions</a>: GNU extensions to the C language family. <li><a accesskey="6" href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Implementation.html#C_002b_002b-Implementation">C++ Implementation</a>: How GCC implements the ISO C++ specification. <li><a accesskey="7" href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html#C_002b_002b-Extensions">C++ Extensions</a>: GNU extensions to the C++ language. <li><a accesskey="8" href="http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC.html#Objective_002dC">Objective-C</a>: GNU Objective-C runtime features. <li><a accesskey="9" href="http://gcc.gnu.org/onlinedocs/gcc/Compatibility.html#Compatibility">Compatibility</a>: Binary Compatibility <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Gcov.html#Gcov">Gcov</a>: <samp><span class="command">gcov</span></samp>---a test coverage program. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Trouble.html#Trouble">Trouble</a>: If you have trouble using GCC. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Bugs.html#Bugs">Bugs</a>: How, why and where to report bugs. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Service.html#Service">Service</a>: How to find suppliers of support for GCC. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Contributing.html#Contributing">Contributing</a>: How to contribute to testing and developing GCC. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Funding.html#Funding">Funding</a>: How to help assure funding for free software. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/GNU-Project.html#GNU-Project">GNU Project</a>: The GNU Project and GNU/Linux. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Copying.html#Copying">Copying</a>: GNU General Public License says how you can copy and share GCC. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>: How you can copy and share this manual. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Contributors.html#Contributors">Contributors</a>: People who have contributed to GCC. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Option-Index.html#Option-Index">Option Index</a>: Index to command line options. <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Keyword-Index.html#Keyword-Index">Keyword Index</a>: Index of concepts and symbol names. </li></ul><!-- Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, --><!-- 1999, 2000, 2001, 2002, 2004, 2008 Free Software Foundation, Inc. --><!-- This is part of the GCC manual. --><!-- For copying conditions, see the file gcc.texi. --><br/><br/>tag : <a href="/tag/ARM" rel="tag">ARM</a>			 ]]> 
		</description>
		<category>IT</category>
		<category>ARM</category>

		<comments>http://chammoru.egloos.com/5102650#comments</comments>
		<pubDate>Thu, 22 Oct 2009 07:35:23 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Ubuntu 8.10 Setting ]]> </title>
		<link>http://chammoru.egloos.com/5100691</link>
		<guid>http://chammoru.egloos.com/5100691</guid>
		<description>
			<![CDATA[ 
  <span style="COLOR: #ff6600">+ </span>Disable 'Enable support to enter complex characters' Option<br>System -&gt; 관리 -&gt; 언어 -&gt; Input method<br>I don't know the exact reason, but we can't use keyboard in VirtualBox with this option. And I like the system font shown when this option was disabled.<br>			 ]]> 
		</description>
		<category>IT</category>

		<comments>http://chammoru.egloos.com/5100691#comments</comments>
		<pubDate>Tue, 20 Oct 2009 00:00:28 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Luke 21:34 ]]> </title>
		<link>http://chammoru.egloos.com/5098701</link>
		<guid>http://chammoru.egloos.com/5098701</guid>
		<description>
			<![CDATA[ 
  <strong><font color="#27568b">Be</font></strong> careful, or your hearts will <strong><font color="#27568b">be</font></strong> weighed down with dissipation, drunkenness and the anxieties of life, and that day will close on you unexpectedly like a trap.			 ]]> 
		</description>
		<category>일기</category>

		<comments>http://chammoru.egloos.com/5098701#comments</comments>
		<pubDate>Sat, 17 Oct 2009 14:37:37 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ How to present with powerpoint (Let's write here one by one) ]]> </title>
		<link>http://chammoru.egloos.com/5098606</link>
		<guid>http://chammoru.egloos.com/5098606</guid>
		<description>
			<![CDATA[ 
  1. Need to prepare what you will say at first in each slide.			 ]]> 
		</description>
		<category>학업</category>

		<comments>http://chammoru.egloos.com/5098606#comments</comments>
		<pubDate>Sat, 17 Oct 2009 12:54:06 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
	<item>
		<title><![CDATA[ You know my way better than I. ]]> </title>
		<link>http://chammoru.egloos.com/5098541</link>
		<guid>http://chammoru.egloos.com/5098541</guid>
		<description>
			<![CDATA[ 
  When I was senior student, I thought I could be the greatest engineer in this company and I wasn't afraid of my future. However now in despair, I'm thinking I was premature and I realize that I have not prayed to You for my future so long time. Now I understand that I'm nothing. My load who knows my way better than me. Please let me follow you and please use me as your tool.<br />
<br />
<object width="425" height="344"><embed src="http://www.youtube.com/v/dhw_y4LPJTU&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object><br />
<br />
I thought I did what's right<br />
I thought I had the answers<br />
I thought I chose the surest road<br />
But that road brought me here<br />
So I put up a fight<br />
And told you how to help me<br />
Now just when I have given up<br />
The truth is coming clear<br />
<br />
You know better than I <br />
You know the way<br />
I've let go the need to know why<br />
For You know better than I<br />
<br />
If this has been a test<br />
I cannot see the reason<br />
But maybe knowing<br />
I don't know is part of getting through<br />
I tried to do what's best<br />
But faith has made it easy<br />
To see the best thing i can do <br />
Is to put my trust in You.<br />
<br />
For, You know better than I <br />
You know the way<br />
I've let go the need to know why<br />
For You know better than I<br />
<br />
I saw one cloud and thought it was a sky<br />
I saw a bird and thought that I could follow<br />
But it was You who taught that bird to fly<br />
If i let You reach me<br />
Will You teach me.<br />
<br />
For, You know better than I <br />
You know the way<br />
I've let go the need to know why<br />
I'll take what answers you supply<br />
You know better than I			 ]]> 
		</description>
		<category>일기</category>

		<comments>http://chammoru.egloos.com/5098541#comments</comments>
		<pubDate>Sat, 17 Oct 2009 11:12:56 GMT</pubDate>
		<dc:creator>참머루</dc:creator>
	</item>
</channel>
</rss>
