# HG changeset patch # User David du Colombier <0intro@gmail.com> # Date 1331073130 -3600 # Node ID dbb1bddf6759228f163a7c18aaea0cfd27aa4aeb # Parent 973230ca515fa1ee3efcf0cde09303b9dfb59226 doc, man: sync with plan 9 R=nixiedev CC=nix-dev http://codereview.appspot.com/5762043 Committer: Francisco J Ballesteros diff -r 973230ca515f -r dbb1bddf6759 sys/doc/asm.ms --- a/sys/doc/asm.ms Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/doc/asm.ms Tue Mar 06 23:32:10 2012 +0100 @@ -930,6 +930,7 @@ The external registers in Plan 9's C are allocated from .CW R15 down. +.PP There are many new instructions, including the MMX and XMM media instructions, and conditional move instructions. MMX registers are @@ -972,13 +973,18 @@ The assembler often accepts the handbook's name to ease conversion of existing code (but remember that the operand order is uniformly source then destination). +.PP C's -.CW "long long" +.CW long +.CW long type is 64 bits, but passed and returned by value, not by reference. More notably, C pointer values are 64 bits, and thus -.CW "long long" +.CW long +.CW long and -.CW "unsigned long long" +.CW unsigned +.CW long +.CW long are the only integer types wide enough to hold a pointer value. The C compiler and library use the XMM floating-point instructions, not the old 387 ones, although the latter are implemented by assembler and loader. @@ -1300,6 +1306,11 @@ .CW R0 is the return register and also the register holding the first argument to a subroutine. +The external registers in Plan 9's C are allocated from +.CW R10 +down. +.CW R11 +is used by the loader as a temporary register. The assembler supports the .CW CPSR and diff -r 973230ca515f -r dbb1bddf6759 sys/doc/asm.ps --- a/sys/doc/asm.ps Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/doc/asm.ps Tue Mar 06 23:32:10 2012 +0100 @@ -7395,396 +7395,363 @@ (R15) 4824 4168 w 10 /LucidaSansUnicode00 f (down.) 720 4288 w -(There) 1096 4288 w -(are) 1423 4288 w -(many) 1624 4288 w -(new) 1935 4288 w -(instructions,) 2179 4288 w -(including) 2833 4288 w -(the) 3331 4288 w -(MMX) 3535 4288 w -(and) 3819 4288 w -(XMM) 4047 4288 w -(media) 4330 4288 w -(instruc\255) 4674 4288 w -(tions,) 720 4408 w -(and) 1031 4408 w -(conditional) 1250 4408 w -(move) 1828 4408 w -(instructions.) 2129 4408 w -(MMX) 2805 4408 w -(registers) 3079 4408 w -(are) 3543 4408 w -10 /LucidaTypewriter f -(M0) 3735 4408 w -10 /LucidaSansUnicode00 f -(to) 3919 4408 w -10 /LucidaTypewriter f -(M7) 4057 4408 w -10 /LucidaSansUnicode00 f -(,) 4201 4408 w -(and) 4273 4408 w -(XMM) 4493 4408 w -(regis\255) 4768 4408 w -(ters) 720 4528 w -(are) 945 4528 w -10 /LucidaTypewriter f -(X0) 1137 4528 w -10 /LucidaSansUnicode00 f -(to) 1321 4528 w -10 /LucidaTypewriter f -(X15) 1459 4528 w -10 /LucidaSansUnicode00 f -(.) 1675 4528 w -(As) 1779 4528 w -(with) 1939 4528 w -(the) 2183 4528 w -(386) 2377 4528 w -(instruction) 2605 4528 w -(names,) 3166 4528 w -(all) 3554 4528 w -(new) 3706 4528 w -(64-bit) 3940 4528 w -(integer) 4292 4528 w -(instruc\255) 4674 4528 w -(tions,) 720 4648 w -(and) 1030 4648 w -(the) 1248 4648 w -(MMX) 1441 4648 w -(and) 1714 4648 w -(XMM) 1932 4648 w -(instructions) 2205 4648 w -(uniformly) 2816 4648 w -(use) 3320 4648 w -10 /LucidaTypewriter f -(L) 3527 4648 w -10 /LucidaSansUnicode00 f -(for) 3637 4648 w +(There) 970 4444 w +(are) 1286 4444 w +(many) 1476 4444 w +(new) 1776 4444 w +(instructions,) 2009 4444 w +(including) 2652 4444 w +(the) 3139 4444 w +(MMX) 3333 4444 w +(and) 3607 4444 w +(XMM) 3826 4444 w +(media) 4100 4444 w +(instructions,) 4435 4444 w +(and) 720 4564 w +(conditional) 938 4564 w +(move) 1514 4564 w +(instructions.) 1813 4564 w +(MMX) 2487 4564 w +(registers) 2759 4564 w +(are) 3220 4564 w +10 /LucidaTypewriter f +(M0) 3409 4564 w +10 /LucidaSansUnicode00 f +(to) 3590 4564 w +10 /LucidaTypewriter f +(M7) 3725 4564 w +10 /LucidaSansUnicode00 f +(,) 3869 4564 w +(and) 3938 4564 w +(XMM) 4155 4564 w +(registers) 4427 4564 w +(are) 4888 4564 w +10 /LucidaTypewriter f +(X0) 720 4684 w +10 /LucidaSansUnicode00 f +(to) 900 4684 w +10 /LucidaTypewriter f +(X15) 1034 4684 w +10 /LucidaSansUnicode00 f +(.) 1250 4684 w +(As) 1350 4684 w +(with) 1506 4684 w +(the) 1747 4684 w +(386) 1938 4684 w +(instruction) 2163 4684 w +(names,) 2721 4684 w +(all) 3106 4684 w +(new) 3256 4684 w +(64-bit) 3488 4684 w +(integer) 3838 4684 w +(instructions,) 4218 4684 w +(and) 4860 4684 w +(the) 720 4804 w +(MMX) 909 4804 w +(and) 1178 4804 w +(XMM) 1392 4804 w +(instructions) 1661 4804 w +(uniformly) 2268 4804 w +(use) 2768 4804 w +10 /LucidaTypewriter f +(L) 2971 4804 w +10 /LucidaSansUnicode00 f +(for) 3077 4804 w 10 /LucidaSansUnicode20 f -(\030) 3814 4648 w -10 /LucidaSansUnicode00 f -(long) 3846 4648 w -(word) 4098 4648 w +(\030) 3250 4804 w +10 /LucidaSansUnicode00 f +(long) 3282 4804 w +(word) 3530 4804 w 10 /LucidaSansUnicode20 f -(\031) 4340 4648 w -10 /LucidaSansUnicode00 f -(\(32) 4410 4648 w -(bits\)) 4608 4648 w -(and) 4860 4648 w -10 /LucidaTypewriter f -(Q) 720 4768 w -10 /LucidaSansUnicode00 f -(for) 844 4768 w +(\031) 3772 4804 w +10 /LucidaSansUnicode00 f +(\(32) 3837 4804 w +(bits\)) 4029 4804 w +(and) 4275 4804 w +10 /LucidaTypewriter f +(Q) 4488 4804 w +10 /LucidaSansUnicode00 f +(for) 4593 4804 w 10 /LucidaSansUnicode20 f -(\030) 1035 4768 w -10 /LucidaSansUnicode00 f -(quad) 1067 4768 w -(word) 1362 4768 w +(\030) 4765 4804 w +10 /LucidaSansUnicode00 f +(quad) 4797 4804 w +(word) 720 4924 w 10 /LucidaSansUnicode20 f -(\031) 1604 4768 w -10 /LucidaSansUnicode00 f -(\(64) 1688 4768 w -(bits\).) 1899 4768 w -(Some) 2228 4768 w -(instructions) 2544 4768 w -(use) 3169 4768 w -10 /LucidaTypewriter f -(O) 3390 4768 w -10 /LucidaSansUnicode00 f -(\() 3514 4768 w +(\031) 962 4924 w +10 /LucidaSansUnicode00 f +(\(64) 1033 4924 w +(bits\).) 1231 4924 w +(Some) 1547 4924 w +(instructions) 1850 4924 w +(use) 2462 4924 w +10 /LucidaTypewriter f +(O) 2670 4924 w +10 /LucidaSansUnicode00 f +(\() 2782 4924 w 10 /LucidaSansUnicode20 f -(\030) 3547 4768 w -10 /LucidaSansUnicode00 f -(octword) 3579 4768 w +(\030) 2815 4924 w +10 /LucidaSansUnicode00 f +(octword) 2847 4924 w 10 /LucidaSansUnicode20 f -(\031) 3970 4768 w -10 /LucidaSansUnicode00 f -(\)) 4002 4768 w -(for) 4086 4768 w -(128-bit) 4276 4768 w -(values,) 4703 4768 w -(where) 720 4888 w -(the) 1047 4888 w -(processor) 1237 4888 w -(handbook) 1748 4888 w -(variously) 2268 4888 w -(uses) 2736 4888 w -10 /LucidaTypewriter f -(O) 2992 4888 w -10 /LucidaSansUnicode00 f -(or) 3100 4888 w -10 /LucidaTypewriter f -(DQ) 3238 4888 w -10 /LucidaSansUnicode00 f -(.) 3382 4888 w -(The) 3482 4888 w -(assembler) 3699 4888 w -(also) 4230 4888 w -(consistently) 4462 4888 w -(uses) 720 5008 w -10 /LucidaTypewriter f -(PL) 977 5008 w -10 /LucidaSansUnicode00 f -(for) 1158 5008 w +(\031) 3238 4924 w +10 /LucidaSansUnicode00 f +(\)) 3270 4924 w +(for) 3343 4924 w +(128-bit) 3522 4924 w +(values,) 3938 4924 w +(where) 4315 4924 w +(the) 4647 4924 w +(pro\255) 4842 4924 w +(cessor) 720 5044 w +(handbook) 1073 5044 w +(variously) 1600 5044 w +(uses) 2074 5044 w +10 /LucidaTypewriter f +(O) 2336 5044 w +10 /LucidaSansUnicode00 f +(or) 2449 5044 w +10 /LucidaTypewriter f +(DQ) 2592 5044 w +10 /LucidaSansUnicode00 f +(.) 2736 5044 w +(The) 2841 5044 w +(assembler) 3063 5044 w +(also) 3599 5044 w +(consistently) 3836 5044 w +(uses) 4455 5044 w +10 /LucidaTypewriter f +(PL) 4716 5044 w +10 /LucidaSansUnicode00 f +(for) 4901 5044 w 10 /LucidaSansUnicode20 f -(\030) 1334 5008 w -10 /LucidaSansUnicode00 f -(packed) 1366 5008 w -(long) 1749 5008 w +(\030) 720 5164 w +10 /LucidaSansUnicode00 f +(packed long) 752 5164 w 10 /LucidaSansUnicode20 f -(\031) 1963 5008 w -10 /LucidaSansUnicode00 f -(in) 2032 5008 w -(XMM) 2160 5008 w -(instructions,) 2432 5008 w -(instead) 3074 5008 w -(of) 3463 5008 w -10 /LucidaTypewriter f -(Q) 3597 5008 w -10 /LucidaSansUnicode00 f -(,) 3669 5008 w -10 /LucidaTypewriter f -(DQ) 3737 5008 w -10 /LucidaSansUnicode00 f -(or) 3917 5008 w -10 /LucidaTypewriter f -(PI) 4055 5008 w -10 /LucidaSansUnicode00 f -(.) 4199 5008 w -(Either) 4299 5008 w -10 /LucidaTypewriter f -(MOVL) 4614 5008 w -10 /LucidaSansUnicode00 f -(or) 4938 5008 w -10 /LucidaTypewriter f -(MOVQ) 720 5128 w -10 /LucidaSansUnicode00 f -(can) 1050 5128 w -(be) 1260 5128 w -(used) 1421 5128 w -(to) 1695 5128 w -(move) 1835 5128 w -(values) 2139 5128 w -(to) 2486 5128 w -(and) 2626 5128 w -(from) 2848 5128 w -(control) 3122 5128 w -(registers,) 3506 5128 w -(even) 4004 5128 w -(when) 4272 5128 w -(the) 4571 5128 w -(regis\255) 4768 5128 w -(ters) 720 5248 w -(might) 945 5248 w -(be) 1268 5248 w -(64) 1427 5248 w -(bits.) 1593 5248 w -(The) 1877 5248 w -(assembler) 2098 5248 w -(often) 2633 5248 w -(accepts) 2926 5248 w -(the) 3330 5248 w -(handbook) 3525 5248 w +(\031) 1344 5164 w +10 /LucidaSansUnicode00 f +(in XMM instructions, instead of) 1408 5164 w +10 /LucidaTypewriter f +(Q) 2950 5164 w +10 /LucidaSansUnicode00 f +(,) 3022 5164 w +10 /LucidaTypewriter f +(DQ) 3086 5164 w +10 /LucidaSansUnicode00 f +(or) 3262 5164 w +10 /LucidaTypewriter f +(PI) 3396 5164 w +10 /LucidaSansUnicode00 f +(.) 3540 5164 w +(Either) 3636 5164 w +10 /LucidaTypewriter f +(MOVL) 3947 5164 w +10 /LucidaSansUnicode00 f +(or) 4267 5164 w +10 /LucidaTypewriter f +(MOVQ) 4401 5164 w +10 /LucidaSansUnicode00 f +(can be) 4721 5164 w +(used) 720 5284 w +(to) 987 5284 w +(move) 1120 5284 w +(values) 1417 5284 w +(to) 1757 5284 w +(and) 1890 5284 w +(from) 2105 5284 w +(control) 2372 5284 w +(registers,) 2749 5284 w +(even) 3240 5284 w +(when) 3501 5284 w +(the) 3793 5284 w +(registers) 3983 5284 w +(might) 4442 5284 w +(be) 4760 5284 w +(64) 4914 5284 w +(bits.) 720 5404 w +(The) 1002 5404 w +(assembler) 1222 5404 w +(often) 1756 5404 w +(accepts) 2048 5404 w +(the) 2451 5404 w +(handbook) 2645 5404 w 10 /LucidaSansUnicode20 f -(\031) 4010 5248 w -10 /LucidaSansUnicode00 f -(s) 4042 5248 w -(name) 4133 5248 w -(to) 4439 5248 w -(ease) 4576 5248 w -(con\255) 4833 5248 w -(version) 720 5368 w -(of) 1107 5368 w -(existing) 1240 5368 w -(code) 1662 5368 w -(\(but) 1928 5368 w -(remember) 2159 5368 w -(that) 2694 5368 w -(the) 2921 5368 w -(operand) 3112 5368 w -(order) 3549 5368 w -(is) 3847 5368 w -(uniformly) 3963 5368 w -(source) 4465 5368 w -(then) 4823 5368 w -(destination\).) 720 5488 w -(C) 1394 5488 w +(\031) 3130 5404 w +10 /LucidaSansUnicode00 f +(s) 3162 5404 w +(name) 3252 5404 w +(to) 3557 5404 w +(ease) 3694 5404 w +(conversion) 3951 5404 w +(of) 4516 5404 w +(existing) 4653 5404 w +(code \(but remember that the operand order is uniformly source then destination\).) 720 5524 w +(C) 970 5680 w 10 /LucidaSansUnicode20 f -(\031) 1463 5488 w -10 /LucidaSansUnicode00 f -(s) 1495 5488 w -10 /LucidaTypewriter f -(long) 1581 5488 w -(long) 1943 5488 w -10 /LucidaSansUnicode00 f -(type) 2265 5488 w -(is) 2507 5488 w -(64) 2621 5488 w -(bits,) 2781 5488 w -(but) 3027 5488 w -(passed) 3223 5488 w -(and) 3596 5488 w -(returned) 3810 5488 w -(by) 4262 5488 w -(value,) 4411 5488 w -(not) 4731 5488 w -(by) 4925 5488 w -(reference.) 720 5608 w -(More) 1298 5608 w -(notably,) 1600 5608 w -(C) 2049 5608 w -(pointer) 2177 5608 w -(values) 2585 5608 w -(are) 2949 5608 w -(64) 3160 5608 w -(bits,) 3345 5608 w -(and) 3616 5608 w -(thus) 3855 5608 w -10 /LucidaTypewriter f -(long) 4126 5608 w -(long) 4513 5608 w -10 /LucidaSansUnicode00 f -(and) 4860 5608 w -10 /LucidaTypewriter f -(unsigned) 720 5728 w -(long) 1388 5728 w -(long) 1768 5728 w -10 /LucidaSansUnicode00 f -(are) 2108 5728 w -(the) 2312 5728 w -(only) 2519 5728 w -(integer) 2774 5728 w -(types) 3168 5728 w -(wide) 3478 5728 w -(enough) 3754 5728 w -(to) 4170 5728 w -(hold) 4319 5728 w -(a) 4585 5728 w -(pointer) 4691 5728 w -(value.) 720 5848 w -(The) 1078 5848 w -(C) 1299 5848 w -(compiler) 1408 5848 w -(and) 1871 5848 w -(library) 2091 5848 w -(use) 2441 5848 w -(the) 2650 5848 w -(XMM) 2845 5848 w -(floating-point) 3121 5848 w -(instructions,) 3844 5848 w -(not) 4490 5848 w -(the) 4691 5848 w -(old) 4887 5848 w -(387) 720 5968 w -(ones,) 961 5968 w -(although) 1275 5968 w -(the) 1757 5968 w -(latter) 1964 5968 w -(are) 2271 5968 w -(implemented) 2475 5968 w -(by) 3164 5968 w -(assembler) 3331 5968 w -(and) 3878 5968 w -(loader.) 4110 5968 w -(Unlike) 4531 5968 w -(the) 4885 5968 w -(386,) 720 6088 w -(the) 988 6088 w -(first) 1190 6088 w -(integer) 1432 6088 w -(or) 1822 6088 w -(pointer) 1971 6088 w -(argument) 2367 6088 w -(is) 2882 6088 w -(passed) 3009 6088 w -(in) 3395 6088 w -(a) 3533 6088 w -(register,) 3635 6088 w -(which) 4087 6088 w -(is) 4416 6088 w -10 /LucidaTypewriter f -(BP) 4544 6088 w -10 /LucidaSansUnicode00 f -(for) 4736 6088 w -(an) 4923 6088 w -(integer) 720 6208 w -(or) 1098 6208 w -(pointer) 1235 6208 w -(\(it) 1619 6208 w -(can) 1753 6208 w -(be) 1956 6208 w -(referred) 2110 6208 w -(to) 2536 6208 w -(in) 2668 6208 w -(assembly) 2793 6208 w -(code) 3277 6208 w -(by) 3542 6208 w -(the) 3691 6208 w -(pseudonym) 3880 6208 w -10 /LucidaTypewriter f -(RARG) 4477 6208 w -10 /LucidaSansUnicode00 f -(\).) 4765 6208 w -10 /LucidaTypewriter f -(AX) 4896 6208 w -10 /LucidaSansUnicode00 f -(holds) 720 6328 w -(the) 1027 6328 w -(return) 1223 6328 w -(value) 1563 6328 w -(from) 1859 6328 w -(subroutines) 2133 6328 w -(as) 2750 6328 w -(before.) 2898 6328 w -(Floating-point) 3318 6328 w -(results) 4059 6328 w -(are) 4428 6328 w -(returned) 4622 6328 w -(in) 720 6448 w -10 /LucidaTypewriter f -(X0) 852 6448 w -10 /LucidaSansUnicode00 f -(,) 996 6448 w -(although) 1069 6448 w -(currently) 1540 6448 w -(the) 2012 6448 w -(first) 2208 6448 w -(floating-point) 2444 6448 w -(parameter) 3167 6448 w -(is) 3705 6448 w -(not) 3826 6448 w -(passed) 4027 6448 w -(in) 4407 6448 w -(a) 4539 6448 w -(register.) 4635 6448 w -(All parameters less) 720 6568 w -(than) 1679 6568 w -(8) 1928 6568 w -(bytes) 2024 6568 w -(in) 2316 6568 w -(length) 2440 6568 w -(have) 2781 6568 w -(8) 3039 6568 w -(byte) 3135 6568 w -(slots) 3376 6568 w -(reserved) 3638 6568 w -(on) 4087 6568 w -(the) 4243 6568 w -(stack) 4431 6568 w -(to) 4716 6568 w -(pre\255) 4847 6568 w -(serve) 720 6688 w -(alignment) 1027 6688 w -(and) 1563 6688 w -(simplify) 1794 6688 w -(variable-length) 2228 6688 w -(argument) 3025 6688 w -(list) 3544 6688 w -(access,) 3741 6688 w -(including) 4139 6688 w -(the) 4639 6688 w -(first) 4845 6688 w -(parameter when passed in a register, even though bytes 4 to 7 are not initialized.) 720 6808 w +(\031) 1039 5680 w +10 /LucidaSansUnicode00 f +(s) 1071 5680 w +10 /LucidaTypewriter f +(long) 1167 5680 w +(long) 1500 5680 w +10 /LucidaSansUnicode00 f +(type) 1833 5680 w +(is) 2086 5680 w +(64) 2211 5680 w +(bits,) 2382 5680 w +(but) 2639 5680 w +(passed) 2846 5680 w +(and) 3230 5680 w +(returned) 3455 5680 w +(by) 3918 5680 w +(value,) 4078 5680 w +(not) 4409 5680 w +(by) 4615 5680 w +(refer\255) 4776 5680 w +(ence.) 720 5800 w +(More) 1042 5800 w +(notably,) 1319 5800 w +(C) 1743 5800 w +(pointer) 1845 5800 w +(values) 2227 5800 w +(are) 2565 5800 w +(64) 2750 5800 w +(bits,) 2909 5800 w +(and) 3154 5800 w +(thus) 3367 5800 w +10 /LucidaTypewriter f +(long) 3612 5800 w +(long) 3932 5800 w +10 /LucidaSansUnicode00 f +(and) 4252 5800 w +10 /LucidaTypewriter f +(unsigned) 4464 5800 w +(long) 720 5920 w +(long) 1040 5920 w +10 /LucidaSansUnicode00 f +(are the only integer types wide enough to hold) 1360 5920 w +(a) 3665 5920 w +(pointer) 3753 5920 w +(value.) 4135 5920 w +(The) 4486 5920 w +(C) 4700 5920 w +(com\255) 4802 5920 w +(piler) 720 6040 w +(and library use the XMM floating-point instructions, not the old 387 ones, although) 971 6040 w +(the) 720 6160 w +(latter) 909 6160 w +(are) 1198 6160 w +(implemented) 1385 6160 w +(by) 2057 6160 w +(assembler) 2207 6160 w +(and) 2737 6160 w +(loader.) 2952 6160 w +(Unlike) 3356 6160 w +(the) 3694 6160 w +(386,) 3884 6160 w +(the) 4140 6160 w +(first) 4330 6160 w +(integer) 4560 6160 w +(or) 4938 6160 w +(pointer) 720 6280 w +(argument) 1104 6280 w +(is) 1607 6280 w +(passed) 1722 6280 w +(in) 2096 6280 w +(a) 2222 6280 w +(register,) 2312 6280 w +(which) 2752 6280 w +(is) 3068 6280 w +10 /LucidaTypewriter f +(BP) 3183 6280 w +10 /LucidaSansUnicode00 f +(for) 3362 6280 w +(an) 3536 6280 w +(integer) 3688 6280 w +(or) 4066 6280 w +(pointer) 4203 6280 w +(\(it) 4586 6280 w +(can) 4719 6280 w +(be) 4921 6280 w +(referred) 720 6400 w +(to) 1146 6400 w +(in) 1279 6400 w +(assembly) 1405 6400 w +(code) 1890 6400 w +(by) 2156 6400 w +(the) 2306 6400 w +(pseudonym) 2496 6400 w +10 /LucidaTypewriter f +(RARG) 3094 6400 w +10 /LucidaSansUnicode00 f +(\).) 3382 6400 w +10 /LucidaTypewriter f +(AX) 3514 6400 w +10 /LucidaSansUnicode00 f +(holds) 3693 6400 w +(the) 3994 6400 w +(return) 4184 6400 w +(value) 4518 6400 w +(from) 4808 6400 w +(subroutines) 720 6520 w +(as) 1330 6520 w +(before.) 1471 6520 w +(Floating-point) 1884 6520 w +(results) 2618 6520 w +(are) 2980 6520 w +(returned) 3167 6520 w +(in) 3620 6520 w +10 /LucidaTypewriter f +(X0) 3746 6520 w +10 /LucidaSansUnicode00 f +(,) 3890 6520 w +(although) 3956 6520 w +(currently) 4420 6520 w +(the) 4885 6520 w +(first) 720 6640 w +(floating-point) 964 6640 w +(parameter) 1695 6640 w +(is) 2241 6640 w +(not) 2370 6640 w +(passed) 2579 6640 w +(in) 2967 6640 w +(a) 3107 6640 w +(register.) 3212 6640 w +(All) 3699 6640 w +(parameters) 3876 6640 w +(less) 4474 6640 w +(than) 4711 6640 w +(8) 4977 6640 w +(bytes) 720 6760 w +(in) 1020 6760 w +(length) 1152 6760 w +(have) 1501 6760 w +(8) 1767 6760 w +(byte) 1871 6760 w +(slots) 2120 6760 w +(reserved) 2389 6760 w +(on) 2845 6760 w +(the) 3008 6760 w +(stack) 3203 6760 w +(to) 3495 6760 w +(preserve) 3633 6760 w +(alignment) 4089 6760 w +(and) 4614 6760 w +(sim\255) 4834 6760 w +(plify) 720 6880 w +(variable-length) 968 6880 w +(argument) 1752 6880 w +(list) 2258 6880 w +(access,) 2442 6880 w +(including) 2827 6880 w +(the) 3314 6880 w +(first) 3507 6880 w +(parameter) 3740 6880 w +(when) 4275 6880 w +(passed) 4571 6880 w +(in) 4949 6880 w +(a register, even though bytes 4 to 7 are not initialized.) 720 7000 w cleartomark showpage saveobj restore @@ -8901,451 +8868,483 @@ (the) 4544 3592 w (return) 4741 3592 w (register) 720 3712 w -(and) 1126 3712 w -(also) 1339 3712 w -(the) 1569 3712 w -(register) 1758 3712 w -(holding) 2165 3712 w -(the) 2567 3712 w -(first) 2756 3712 w -(argument) 2985 3712 w -(to) 3487 3712 w -(a) 3619 3712 w -(subroutine.) 3708 3712 w -(The) 4330 3712 w -(assembler) 4545 3712 w -(supports) 720 3832 w -(the) 1190 3832 w -10 /LucidaTypewriter f -(CPSR) 1386 3832 w -10 /LucidaSansUnicode00 f -(and) 1715 3832 w -10 /LucidaTypewriter f -(SPSR) 1936 3832 w -10 /LucidaSansUnicode00 f -(registers.) 2265 3832 w -(It) 2794 3832 w -(also) 2901 3832 w -(knows) 3137 3832 w -(about) 3486 3832 w -(coprocessor) 3804 3832 w -(registers) 4432 3832 w -10 /LucidaTypewriter f -(C0) 4896 3832 w -10 /LucidaSansUnicode00 f -(through) 720 3952 w -10 /LucidaTypewriter f -(C15) 1139 3952 w -10 /LucidaSansUnicode00 f -(.) 1355 3952 w -(Floating registers are) 1451 3952 w -10 /LucidaTypewriter f -(F0) 2512 3952 w -10 /LucidaSansUnicode00 f -(through) 2688 3952 w -10 /LucidaTypewriter f -(F7) 3107 3952 w -10 /LucidaSansUnicode00 f -(,) 3251 3952 w -10 /LucidaTypewriter f -(FPSR) 3315 3952 w -10 /LucidaSansUnicode00 f -(and) 3635 3952 w -10 /LucidaTypewriter f -(FPCR) 3847 3952 w -10 /LucidaSansUnicode00 f -(.) 4135 3952 w -(As) 970 4108 w -(with) 1137 4108 w -(the) 1389 4108 w -(other) 1591 4108 w -(architectures,) 1895 4108 w -(loads) 2603 4108 w -(and) 2909 4108 w -(stores) 3136 4108 w -(are) 3480 4108 w -(called) 3679 4108 w -10 /LucidaTypewriter f -(MOV) 4009 4108 w -10 /LucidaSansUnicode00 f -(,) 4225 4108 w -(e.g.) 4304 4108 w -10 /LucidaTypewriter f -(MOVW) 4565 4108 w -10 /LucidaSansUnicode00 f -(for) 4901 4108 w -(load) 720 4228 w -(word) 990 4228 w -(or) 1294 4228 w -(store) 1458 4228 w -(word,) 1766 4228 w -(and) 2102 4228 w -10 /LucidaTypewriter f -(MOVM) 2344 4228 w -10 /LucidaSansUnicode00 f -(for) 2694 4228 w -(load) 2894 4228 w -(or) 3163 4228 w -(store) 3326 4228 w -(multiple,) 3633 4228 w -(depending) 4124 4228 w -(on) 4701 4228 w -(the) 4885 4228 w -(operands.) 720 4348 w -(Addressing) 970 4504 w -(modes) 1562 4504 w -(are) 1931 4504 w -(supported) 2128 4504 w -(by) 2671 4504 w -(suffixes) 2832 4504 w -(to) 3262 4504 w -(the) 3406 4504 w -(instructions:) 3607 4504 w -10 /LucidaTypewriter f -(.IA) 4258 4504 w -10 /LucidaSansUnicode00 f -(\(increment) 4520 4504 w -(after\),) 720 4624 w -10 /LucidaTypewriter f -(.IB) 1065 4624 w -10 /LucidaSansUnicode00 f -(\(increment) 1335 4624 w -(before\),) 1909 4624 w -10 /LucidaTypewriter f -(.DA) 2342 4624 w -10 /LucidaSansUnicode00 f -(\(decrement) 2612 4624 w -(after\),) 3214 4624 w -(and) 3558 4624 w -10 /LucidaTypewriter f -(.DB) 3791 4624 w -10 /LucidaSansUnicode00 f -(\(decrement) 4060 4624 w -(before\).) 4661 4624 w -(These) 720 4744 w -(can) 1066 4744 w -(only) 1292 4744 w -(be) 1554 4744 w -(used) 1731 4744 w -(with) 2021 4744 w -(the) 2284 4744 w -10 /LucidaTypewriter f -(MOV) 2497 4744 w -10 /LucidaSansUnicode00 f -(instructions.) 2772 4744 w -(The) 3468 4744 w -(move) 3708 4744 w -(multiple) 4029 4744 w -(instruction,) 4486 4744 w -10 /LucidaTypewriter f -(MOVM) 720 4864 w -10 /LucidaSansUnicode00 f -(,) 1008 4864 w -(defines) 1076 4864 w -(a) 1466 4864 w -(range) 1557 4864 w -(of) 1869 4864 w -(registers) 2003 4864 w -(using) 2463 4864 w -(brackets,) 2764 4864 w -(e.g.) 3243 4864 w -10 /LucidaTypewriter f -([R0-R12]) 3492 4864 w -10 /LucidaSansUnicode00 f -(.) 4068 4864 w -(The) 4167 4864 w -(special) 4383 4864 w -10 /LucidaTypewriter f -(MOVM) 4752 4864 w -10 /LucidaSansUnicode00 f -(addressing) 720 4984 w -(mode) 1317 4984 w -(bits) 1654 4984 w -10 /LucidaTypewriter f -(W) 1898 4984 w -10 /LucidaSansUnicode00 f -(,) 1970 4984 w -10 /LucidaTypewriter f -(U) 2066 4984 w -10 /LucidaSansUnicode00 f -(,) 2138 4984 w -(and) 2234 4984 w -10 /LucidaTypewriter f -(P) 2478 4984 w -10 /LucidaSansUnicode00 f -(are) 2614 4984 w -(written) 2830 4984 w -(in) 3233 4984 w -(the) 3388 4984 w -(same) 3607 4984 w -(manner,) 3926 4984 w -(for) 4391 4984 w -(example,) 4595 4984 w -10 /LucidaTypewriter f -(MOVM.DB.W) 720 5104 w -10 /LucidaSansUnicode00 f -(.) 1368 5104 w -(A) 1465 5104 w -10 /LucidaTypewriter f -(.S) 1567 5104 w -10 /LucidaSansUnicode00 f -(suffix) 1744 5104 w -(allows) 2054 5104 w -(a) 2389 5104 w -10 /LucidaTypewriter f -(MOVM) 2477 5104 w -10 /LucidaSansUnicode00 f -(instruction) 2798 5104 w -(to) 3353 5104 w -(access) 3484 5104 w -(user) 3832 5104 w -10 /LucidaTypewriter f -(R13) 4075 5104 w -10 /LucidaSansUnicode00 f -(and) 4323 5104 w -10 /LucidaTypewriter f -(R14) 4535 5104 w -10 /LucidaSansUnicode00 f -(when) 4783 5104 w -(in) 720 5224 w -(another) 856 5224 w -(processor) 1275 5224 w -(mode.) 1796 5224 w -(Shifts) 2178 5224 w -(and) 2493 5224 w -(rotates) 2718 5224 w -(in) 3101 5224 w -(addressing) 3237 5224 w -(modes) 3815 5224 w -(are) 4184 5224 w -(supported) 4382 5224 w -(by) 4925 5224 w -(binary) 720 5344 w -(operators) 1056 5344 w -10 /LucidaTypewriter f -(<<) 1556 5344 w -10 /LucidaSansUnicode00 f -(\(logical) 1734 5344 w -(left) 2117 5344 w -(shift\),) 2310 5344 w -10 /LucidaTypewriter f -(>>) 2625 5344 w -10 /LucidaSansUnicode00 f -(\(logical) 2802 5344 w -(right) 3184 5344 w -(shift\),) 3448 5344 w -10 /LucidaTypewriter f -(->) 3762 5344 w -10 /LucidaSansUnicode00 f -(\(arithmetic) 3939 5344 w -(right) 4495 5344 w -(shift\),) 4759 5344 w -(and) 720 5464 w -10 /LucidaTypewriter f -(@>) 935 5464 w -10 /LucidaSansUnicode00 f -(\(rotate) 1114 5464 w -(right\);) 1469 5464 w -(for) 1800 5464 w -(example) 1974 5464 w -10 /LucidaTypewriter f -(R7>>R2) 2422 5464 w -10 /LucidaSansUnicode00 f -(or) 2854 5464 w -10 /LucidaTypewriter f -(R2@>2) 2991 5464 w -10 /LucidaSansUnicode00 f -(.) 3351 5464 w -(The) 3451 5464 w -(assembler) 3668 5464 w -(does) 4199 5464 w -(not) 4466 5464 w -(support) 4662 5464 w -(indexing by a shifted expression; only names can be doubly indexed.) 720 5584 w -(Any) 970 5740 w -(instruction) 1191 5740 w -(can) 1751 5740 w -(be) 1958 5740 w -(followed) 2116 5740 w -(by) 2568 5740 w -(a) 2722 5740 w -(suffix) 2816 5740 w -(that) 3132 5740 w -(makes) 3362 5740 w -(the) 3714 5740 w -(instruction) 3908 5740 w -(conditional:) 4469 5740 w -10 /LucidaTypewriter f -(.EQ) 720 5860 w -10 /LucidaSansUnicode00 f -(,) 936 5860 w -10 /LucidaTypewriter f -(.NE) 1012 5860 w -10 /LucidaSansUnicode00 f -(,) 1228 5860 w -(and) 1304 5860 w -(so) 1528 5860 w -(on,) 1684 5860 w -(as) 1883 5860 w -(in) 2033 5860 w -(the) 2168 5860 w -(ARM) 2367 5860 w -(manual,) 2629 5860 w -(with) 3060 5860 w -(synonyms) 3308 5860 w -10 /LucidaTypewriter f -(.HS) 3835 5860 w -10 /LucidaSansUnicode00 f -(\(for) 4094 5860 w -10 /LucidaTypewriter f -(.CS) 4309 5860 w -10 /LucidaSansUnicode00 f -(\)) 4525 5860 w -(and) 4601 5860 w -10 /LucidaTypewriter f -(.LO) 4824 5860 w -10 /LucidaSansUnicode00 f -(\(for) 720 5980 w -10 /LucidaTypewriter f -(.CC) 928 5980 w -10 /LucidaSansUnicode00 f -(\),) 1144 5980 w -(for) 1245 5980 w -(example) 1420 5980 w -10 /LucidaTypewriter f -(ADD.NE) 1869 5980 w -10 /LucidaSansUnicode00 f -(.) 2301 5980 w -(Arithmetic) 2401 5980 w -(and) 2941 5980 w -(logical) 3157 5980 w -(instructions) 3509 5980 w -(can) 4118 5980 w -(have) 4322 5980 w -(a) 4584 5980 w -10 /LucidaTypewriter f -(.S) 4676 5980 w -10 /LucidaSansUnicode00 f -(suf\255) 4857 5980 w -(fix, as ARM allows, to set condition codes.) 720 6100 w -(The) 970 6256 w -(syntax) 1190 6256 w -(of) 1547 6256 w -(the) 1684 6256 w -10 /LucidaTypewriter f -(MCR) 1878 6256 w -10 /LucidaSansUnicode00 f -(and) 2133 6256 w -10 /LucidaTypewriter f -(MRC) 2352 6256 w -10 /LucidaSansUnicode00 f -(coprocessor) 2607 6256 w -(instructions) 3234 6256 w -(is) 3846 6256 w -(largely) 3965 6256 w -(as) 4328 6256 w -(in) 4473 6256 w -(the) 4603 6256 w -(man\255) 4797 6256 w -(ual,) 720 6376 w -(with) 973 6376 w -(the) 1253 6376 w -(usual) 1483 6376 w -(adjustments.) 1817 6376 w -(The) 2553 6376 w -(assembler) 2809 6376 w -(directly) 3379 6376 w -(supports) 3812 6376 w -(only) 4315 6376 w -(the) 4593 6376 w -(ARM) 4822 6376 w -(floating-point) 720 6496 w -(coprocessor) 1438 6496 w -(operations) 2062 6496 w -(used) 2615 6496 w -(by) 2884 6496 w -(the) 3036 6496 w -(compiler:) 3228 6496 w -10 /LucidaTypewriter f -(CMP) 3720 6496 w -10 /LucidaSansUnicode00 f -(,) 3936 6496 w -10 /LucidaTypewriter f -(ADD) 4005 6496 w -10 /LucidaSansUnicode00 f -(,) 4221 6496 w -10 /LucidaTypewriter f -(SUB) 4290 6496 w -10 /LucidaSansUnicode00 f -(,) 4506 6496 w -10 /LucidaTypewriter f -(MUL) 4575 6496 w -10 /LucidaSansUnicode00 f -(,) 4791 6496 w -(and) 4860 6496 w -10 /LucidaTypewriter f -(DIV) 720 6616 w -10 /LucidaSansUnicode00 f -(,) 936 6616 w -(all) 1008 6616 w -(with) 1161 6616 w -10 /LucidaTypewriter f -(F) 1406 6616 w -10 /LucidaSansUnicode00 f -(or) 1518 6616 w -10 /LucidaTypewriter f -(D) 1660 6616 w -10 /LucidaSansUnicode00 f -(suffix) 1772 6616 w -(selecting) 2089 6616 w -(single) 2562 6616 w -(or) 2891 6616 w -(double) 3033 6616 w -(precision.) 3407 6616 w -(Floating-point) 3953 6616 w -(load) 4691 6616 w -(or) 4938 6616 w -(store) 720 6736 w -(become) 1012 6736 w -10 /LucidaTypewriter f -(MOVF) 1438 6736 w -10 /LucidaSansUnicode00 f -(and) 1772 6736 w -10 /LucidaTypewriter f -(MOVD) 1999 6736 w -10 /LucidaSansUnicode00 f -(.) 2287 6736 w -(Conversion) 2398 6736 w -(instructions) 2989 6736 w -(are) 3609 6736 w -(also) 3808 6736 w -(specified) 4051 6736 w -(by) 4533 6736 w -(moves:) 4695 6736 w -10 /LucidaTypewriter f -(MOVWD) 720 6856 w -10 /LucidaSansUnicode00 f -(,) 1080 6856 w -10 /LucidaTypewriter f -(MOVWF) 1144 6856 w -10 /LucidaSansUnicode00 f -(,) 1504 6856 w -10 /LucidaTypewriter f -(MOVDW) 1568 6856 w -10 /LucidaSansUnicode00 f -(,) 1928 6856 w -10 /LucidaTypewriter f -(MOVWD) 1992 6856 w -10 /LucidaSansUnicode00 f -(,) 2352 6856 w -10 /LucidaTypewriter f -(MOVFD) 2416 6856 w -10 /LucidaSansUnicode00 f -(, and) 2776 6856 w -10 /LucidaTypewriter f -(MOVDF) 3052 6856 w -10 /LucidaSansUnicode00 f -(.) 3412 6856 w +(and) 1134 3712 w +(also) 1355 3712 w +(the) 1592 3712 w +(register) 1788 3712 w +(holding) 2202 3712 w +(the) 2611 3712 w +(first) 2807 3712 w +(argument) 3043 3712 w +(to) 3553 3712 w +(a) 3693 3712 w +(subroutine.) 3790 3712 w +(The) 4420 3712 w +(external) 4643 3712 w +(registers) 720 3832 w +(in) 1183 3832 w +(Plan) 1313 3832 w +(9) 1553 3832 w +10 /LucidaSansUnicode20 f +(\031) 1616 3832 w +10 /LucidaSansUnicode00 f +(s) 1648 3832 w +(C) 1738 3832 w +(are) 1846 3832 w +(allocated) 2037 3832 w +(from) 2512 3832 w +10 /LucidaTypewriter f +(R10) 2783 3832 w +10 /LucidaSansUnicode00 f +(down.) 3038 3832 w +10 /LucidaTypewriter f +(R11) 3404 3832 w +10 /LucidaSansUnicode00 f +(is) 3659 3832 w +(used) 3778 3832 w +(the) 4048 3832 w +(loader) 4241 3832 w +(as) 4584 3832 w +(a) 4728 3832 w +(tem\255) 4821 3832 w +(porary) 720 3952 w +(register.) 1074 3952 w +(The) 1552 3952 w +(assembler) 1774 3952 w +(supports) 2310 3952 w +(the) 2780 3952 w +10 /LucidaTypewriter f +(CPSR) 2976 3952 w +10 /LucidaSansUnicode00 f +(and) 3305 3952 w +10 /LucidaTypewriter f +(SPSR) 3526 3952 w +10 /LucidaSansUnicode00 f +(registers.) 3855 3952 w +(It) 4385 3952 w +(also) 4493 3952 w +(knows) 4731 3952 w +(about) 720 4072 w +(coprocessor) 1048 4072 w +(registers) 1686 4072 w +10 /LucidaTypewriter f +(C0) 2160 4072 w +10 /LucidaSansUnicode00 f +(through) 2354 4072 w +10 /LucidaTypewriter f +(C15) 2791 4072 w +10 /LucidaSansUnicode00 f +(.) 3007 4072 w +(Floating) 3121 4072 w +(registers) 3560 4072 w +(are) 4034 4072 w +10 /LucidaTypewriter f +(F0) 4235 4072 w +10 /LucidaSansUnicode00 f +(through) 4428 4072 w +10 /LucidaTypewriter f +(F7) 4864 4072 w +10 /LucidaSansUnicode00 f +(,) 5008 4072 w +10 /LucidaTypewriter f +(FPSR) 720 4192 w +10 /LucidaSansUnicode00 f +(and) 1040 4192 w +10 /LucidaTypewriter f +(FPCR) 1252 4192 w +10 /LucidaSansUnicode00 f +(.) 1540 4192 w +(As) 970 4348 w +(with) 1137 4348 w +(the) 1389 4348 w +(other) 1591 4348 w +(architectures,) 1895 4348 w +(loads) 2603 4348 w +(and) 2909 4348 w +(stores) 3136 4348 w +(are) 3480 4348 w +(called) 3679 4348 w +10 /LucidaTypewriter f +(MOV) 4009 4348 w +10 /LucidaSansUnicode00 f +(,) 4225 4348 w +(e.g.) 4304 4348 w +10 /LucidaTypewriter f +(MOVW) 4565 4348 w +10 /LucidaSansUnicode00 f +(for) 4901 4348 w +(load) 720 4468 w +(word) 990 4468 w +(or) 1294 4468 w +(store) 1458 4468 w +(word,) 1766 4468 w +(and) 2102 4468 w +10 /LucidaTypewriter f +(MOVM) 2344 4468 w +10 /LucidaSansUnicode00 f +(for) 2694 4468 w +(load) 2894 4468 w +(or) 3163 4468 w +(store) 3326 4468 w +(multiple,) 3633 4468 w +(depending) 4124 4468 w +(on) 4701 4468 w +(the) 4885 4468 w +(operands.) 720 4588 w +(Addressing) 970 4744 w +(modes) 1562 4744 w +(are) 1931 4744 w +(supported) 2128 4744 w +(by) 2671 4744 w +(suffixes) 2832 4744 w +(to) 3262 4744 w +(the) 3406 4744 w +(instructions:) 3607 4744 w +10 /LucidaTypewriter f +(.IA) 4258 4744 w +10 /LucidaSansUnicode00 f +(\(increment) 4520 4744 w +(after\),) 720 4864 w +10 /LucidaTypewriter f +(.IB) 1065 4864 w +10 /LucidaSansUnicode00 f +(\(increment) 1335 4864 w +(before\),) 1909 4864 w +10 /LucidaTypewriter f +(.DA) 2342 4864 w +10 /LucidaSansUnicode00 f +(\(decrement) 2612 4864 w +(after\),) 3214 4864 w +(and) 3558 4864 w +10 /LucidaTypewriter f +(.DB) 3791 4864 w +10 /LucidaSansUnicode00 f +(\(decrement) 4060 4864 w +(before\).) 4661 4864 w +(These) 720 4984 w +(can) 1066 4984 w +(only) 1292 4984 w +(be) 1554 4984 w +(used) 1731 4984 w +(with) 2021 4984 w +(the) 2284 4984 w +10 /LucidaTypewriter f +(MOV) 2497 4984 w +10 /LucidaSansUnicode00 f +(instructions.) 2772 4984 w +(The) 3468 4984 w +(move) 3708 4984 w +(multiple) 4029 4984 w +(instruction,) 4486 4984 w +10 /LucidaTypewriter f +(MOVM) 720 5104 w +10 /LucidaSansUnicode00 f +(,) 1008 5104 w +(defines) 1076 5104 w +(a) 1466 5104 w +(range) 1557 5104 w +(of) 1869 5104 w +(registers) 2003 5104 w +(using) 2463 5104 w +(brackets,) 2764 5104 w +(e.g.) 3243 5104 w +10 /LucidaTypewriter f +([R0-R12]) 3492 5104 w +10 /LucidaSansUnicode00 f +(.) 4068 5104 w +(The) 4167 5104 w +(special) 4383 5104 w +10 /LucidaTypewriter f +(MOVM) 4752 5104 w +10 /LucidaSansUnicode00 f +(addressing) 720 5224 w +(mode) 1317 5224 w +(bits) 1654 5224 w +10 /LucidaTypewriter f +(W) 1898 5224 w +10 /LucidaSansUnicode00 f +(,) 1970 5224 w +10 /LucidaTypewriter f +(U) 2066 5224 w +10 /LucidaSansUnicode00 f +(,) 2138 5224 w +(and) 2234 5224 w +10 /LucidaTypewriter f +(P) 2478 5224 w +10 /LucidaSansUnicode00 f +(are) 2614 5224 w +(written) 2830 5224 w +(in) 3233 5224 w +(the) 3388 5224 w +(same) 3607 5224 w +(manner,) 3926 5224 w +(for) 4391 5224 w +(example,) 4595 5224 w +10 /LucidaTypewriter f +(MOVM.DB.W) 720 5344 w +10 /LucidaSansUnicode00 f +(.) 1368 5344 w +(A) 1465 5344 w +10 /LucidaTypewriter f +(.S) 1567 5344 w +10 /LucidaSansUnicode00 f +(suffix) 1744 5344 w +(allows) 2054 5344 w +(a) 2389 5344 w +10 /LucidaTypewriter f +(MOVM) 2477 5344 w +10 /LucidaSansUnicode00 f +(instruction) 2798 5344 w +(to) 3353 5344 w +(access) 3484 5344 w +(user) 3832 5344 w +10 /LucidaTypewriter f +(R13) 4075 5344 w +10 /LucidaSansUnicode00 f +(and) 4323 5344 w +10 /LucidaTypewriter f +(R14) 4535 5344 w +10 /LucidaSansUnicode00 f +(when) 4783 5344 w +(in) 720 5464 w +(another) 856 5464 w +(processor) 1275 5464 w +(mode.) 1796 5464 w +(Shifts) 2178 5464 w +(and) 2493 5464 w +(rotates) 2718 5464 w +(in) 3101 5464 w +(addressing) 3237 5464 w +(modes) 3815 5464 w +(are) 4184 5464 w +(supported) 4382 5464 w +(by) 4925 5464 w +(binary) 720 5584 w +(operators) 1056 5584 w +10 /LucidaTypewriter f +(<<) 1556 5584 w +10 /LucidaSansUnicode00 f +(\(logical) 1734 5584 w +(left) 2117 5584 w +(shift\),) 2310 5584 w +10 /LucidaTypewriter f +(>>) 2625 5584 w +10 /LucidaSansUnicode00 f +(\(logical) 2802 5584 w +(right) 3184 5584 w +(shift\),) 3448 5584 w +10 /LucidaTypewriter f +(->) 3762 5584 w +10 /LucidaSansUnicode00 f +(\(arithmetic) 3939 5584 w +(right) 4495 5584 w +(shift\),) 4759 5584 w +(and) 720 5704 w +10 /LucidaTypewriter f +(@>) 935 5704 w +10 /LucidaSansUnicode00 f +(\(rotate) 1114 5704 w +(right\);) 1469 5704 w +(for) 1800 5704 w +(example) 1974 5704 w +10 /LucidaTypewriter f +(R7>>R2) 2422 5704 w +10 /LucidaSansUnicode00 f +(or) 2854 5704 w +10 /LucidaTypewriter f +(R2@>2) 2991 5704 w +10 /LucidaSansUnicode00 f +(.) 3351 5704 w +(The) 3451 5704 w +(assembler) 3668 5704 w +(does) 4199 5704 w +(not) 4466 5704 w +(support) 4662 5704 w +(indexing by a shifted expression; only names can be doubly indexed.) 720 5824 w +(Any) 970 5980 w +(instruction) 1191 5980 w +(can) 1751 5980 w +(be) 1958 5980 w +(followed) 2116 5980 w +(by) 2568 5980 w +(a) 2722 5980 w +(suffix) 2816 5980 w +(that) 3132 5980 w +(makes) 3362 5980 w +(the) 3714 5980 w +(instruction) 3908 5980 w +(conditional:) 4469 5980 w +10 /LucidaTypewriter f +(.EQ) 720 6100 w +10 /LucidaSansUnicode00 f +(,) 936 6100 w +10 /LucidaTypewriter f +(.NE) 1012 6100 w +10 /LucidaSansUnicode00 f +(,) 1228 6100 w +(and) 1304 6100 w +(so) 1528 6100 w +(on,) 1684 6100 w +(as) 1883 6100 w +(in) 2033 6100 w +(the) 2168 6100 w +(ARM) 2367 6100 w +(manual,) 2629 6100 w +(with) 3060 6100 w +(synonyms) 3308 6100 w +10 /LucidaTypewriter f +(.HS) 3835 6100 w +10 /LucidaSansUnicode00 f +(\(for) 4094 6100 w +10 /LucidaTypewriter f +(.CS) 4309 6100 w +10 /LucidaSansUnicode00 f +(\)) 4525 6100 w +(and) 4601 6100 w +10 /LucidaTypewriter f +(.LO) 4824 6100 w +10 /LucidaSansUnicode00 f +(\(for) 720 6220 w +10 /LucidaTypewriter f +(.CC) 928 6220 w +10 /LucidaSansUnicode00 f +(\),) 1144 6220 w +(for) 1245 6220 w +(example) 1420 6220 w +10 /LucidaTypewriter f +(ADD.NE) 1869 6220 w +10 /LucidaSansUnicode00 f +(.) 2301 6220 w +(Arithmetic) 2401 6220 w +(and) 2941 6220 w +(logical) 3157 6220 w +(instructions) 3509 6220 w +(can) 4118 6220 w +(have) 4322 6220 w +(a) 4584 6220 w +10 /LucidaTypewriter f +(.S) 4676 6220 w +10 /LucidaSansUnicode00 f +(suf\255) 4857 6220 w +(fix, as ARM allows, to set condition codes.) 720 6340 w +(The) 970 6496 w +(syntax) 1190 6496 w +(of) 1547 6496 w +(the) 1684 6496 w +10 /LucidaTypewriter f +(MCR) 1878 6496 w +10 /LucidaSansUnicode00 f +(and) 2133 6496 w +10 /LucidaTypewriter f +(MRC) 2352 6496 w +10 /LucidaSansUnicode00 f +(coprocessor) 2607 6496 w +(instructions) 3234 6496 w +(is) 3846 6496 w +(largely) 3965 6496 w +(as) 4328 6496 w +(in) 4473 6496 w +(the) 4603 6496 w +(man\255) 4797 6496 w +(ual,) 720 6616 w +(with) 973 6616 w +(the) 1253 6616 w +(usual) 1483 6616 w +(adjustments.) 1817 6616 w +(The) 2553 6616 w +(assembler) 2809 6616 w +(directly) 3379 6616 w +(supports) 3812 6616 w +(only) 4315 6616 w +(the) 4593 6616 w +(ARM) 4822 6616 w +(floating-point) 720 6736 w +(coprocessor) 1438 6736 w +(operations) 2062 6736 w +(used) 2615 6736 w +(by) 2884 6736 w +(the) 3036 6736 w +(compiler:) 3228 6736 w +10 /LucidaTypewriter f +(CMP) 3720 6736 w +10 /LucidaSansUnicode00 f +(,) 3936 6736 w +10 /LucidaTypewriter f +(ADD) 4005 6736 w +10 /LucidaSansUnicode00 f +(,) 4221 6736 w +10 /LucidaTypewriter f +(SUB) 4290 6736 w +10 /LucidaSansUnicode00 f +(,) 4506 6736 w +10 /LucidaTypewriter f +(MUL) 4575 6736 w +10 /LucidaSansUnicode00 f +(,) 4791 6736 w +(and) 4860 6736 w +10 /LucidaTypewriter f +(DIV) 720 6856 w +10 /LucidaSansUnicode00 f +(,) 936 6856 w +(all) 1008 6856 w +(with) 1161 6856 w +10 /LucidaTypewriter f +(F) 1406 6856 w +10 /LucidaSansUnicode00 f +(or) 1518 6856 w +10 /LucidaTypewriter f +(D) 1660 6856 w +10 /LucidaSansUnicode00 f +(suffix) 1772 6856 w +(selecting) 2089 6856 w +(single) 2562 6856 w +(or) 2891 6856 w +(double) 3033 6856 w +(precision.) 3407 6856 w +(Floating-point) 3953 6856 w +(load) 4691 6856 w +(or) 4938 6856 w +(store) 720 6976 w +(become) 1012 6976 w +10 /LucidaTypewriter f +(MOVF) 1438 6976 w +10 /LucidaSansUnicode00 f +(and) 1772 6976 w +10 /LucidaTypewriter f +(MOVD) 1999 6976 w +10 /LucidaSansUnicode00 f +(.) 2287 6976 w +(Conversion) 2398 6976 w +(instructions) 2989 6976 w +(are) 3609 6976 w +(also) 3808 6976 w +(specified) 4051 6976 w +(by) 4533 6976 w +(moves:) 4695 6976 w +10 /LucidaTypewriter f +(MOVWD) 720 7096 w +10 /LucidaSansUnicode00 f +(,) 1080 7096 w +10 /LucidaTypewriter f +(MOVWF) 1144 7096 w +10 /LucidaSansUnicode00 f +(,) 1504 7096 w +10 /LucidaTypewriter f +(MOVDW) 1568 7096 w +10 /LucidaSansUnicode00 f +(,) 1928 7096 w +10 /LucidaTypewriter f +(MOVWD) 1992 7096 w +10 /LucidaSansUnicode00 f +(,) 2352 7096 w +10 /LucidaTypewriter f +(MOVFD) 2416 7096 w +10 /LucidaSansUnicode00 f +(, and) 2776 7096 w +10 /LucidaTypewriter f +(MOVDF) 3052 7096 w +10 /LucidaSansUnicode00 f +(.) 3412 7096 w cleartomark showpage saveobj restore diff -r 973230ca515f -r dbb1bddf6759 sys/doc/comp.ms --- a/sys/doc/comp.ms Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/doc/comp.ms Tue Mar 06 23:32:10 2012 +0100 @@ -25,7 +25,7 @@ .SH Source .PP -The language accepted by the compilers is the core ANSI C language +The language accepted by the compilers is the core 1989 ANSI C language with some modest extensions, a greatly simplified preprocessor, a smaller library that includes system calls and related facilities, @@ -1075,8 +1075,9 @@ .SH Extensions .PP -The compiler has several extensions to ANSI C, all of which are used +The compiler has several extensions to 1989 ANSI C, all of which are used extensively in the system source. +Some of these have been adopted in later ANSI C standards. First, .I structure .I displays diff -r 973230ca515f -r dbb1bddf6759 sys/doc/comp.ps --- a/sys/doc/comp.ps Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/doc/comp.ps Tue Mar 06 23:32:10 2012 +0100 @@ -3129,6 +3129,7 @@ %%EndResource %!PS-Adobe-2.0 %%Version: 0.1 +%%Creator: troff, Plan 9 edition %%Pages: (atend) %%EndComments % @@ -3815,374 +3816,365 @@ (Source) 720 3792 w 10 /LucidaSansUnicode00 f (The) 970 3948 w -(language) 1198 3948 w -(accepted) 1688 3948 w -(by) 2168 3948 w -(the) 2331 3948 w -(compilers) 2534 3948 w -(is) 3056 3948 w -(the) 3184 3948 w -(core) 3387 3948 w -(ANSI) 3644 3948 w -(C) 3918 3948 w -(language) 4035 3948 w -(with) 4526 3948 w -(some) 4779 3948 w -(modest) 720 4068 w -(extensions,) 1115 4068 w -(a) 1707 4068 w -(greatly) 1796 4068 w -(simplified) 2162 4068 w -(preprocessor,) 2674 4068 w -(a) 3375 4068 w -(smaller) 3463 4068 w -(library) 3850 4068 w -(that) 4193 4068 w -(includes) 4417 4068 w -(sys\255) 4853 4068 w -(tem calls and related facilities, and a completely different structure for include files.) 720 4188 w -(Official) 970 4344 w -(ANSI) 1353 4344 w -(C) 1617 4344 w -(accepts) 1724 4344 w -(the) 2126 4344 w -(old) 2319 4344 w -(\(K&R\)) 2510 4344 w -(style) 2812 4344 w -(of) 3076 4344 w -(declarations) 3213 4344 w -(for) 3842 4344 w -(functions;) 4020 4344 w -(the) 4543 4344 w -(Plan) 4737 4344 w -(9) 4977 4344 w -(compilers) 720 4464 w -(are) 1227 4464 w -(more) 1412 4464 w -(demanding.) 1696 4464 w -(Without) 2338 4464 w -(an) 2745 4464 w -(explicit) 2895 4464 w -(run-time) 3283 4464 w -(flag) 3754 4464 w -(\() 3970 4464 w -10 /LucidaTypewriter f -(-B) 4003 4464 w -10 /LucidaSansUnicode00 f -(\) whose use is dis\255) 4147 4464 w -(couraged, the compilers) 720 4584 w -(insist) 1929 4584 w -(on) 2221 4584 w -(new-style) 2377 4584 w -(function) 2888 4584 w -(declarations,) 3322 4584 w -(that) 3977 4584 w -(is,) 4201 4584 w -(prototypes) 4346 4584 w -(for) 4901 4584 w -(function) 720 4704 w -(arguments.) 1154 4704 w -(The) 1770 4704 w -(function) 1984 4704 w -(declarations) 2418 4704 w -(in) 3041 4704 w -(the) 3165 4704 w -(libraries) 3353 4704 w +(language) 1199 3948 w +(accepted) 1690 3948 w +(by) 2170 3948 w +(the) 2333 3948 w +(compilers) 2536 3948 w +(is) 3058 3948 w +(the) 3187 3948 w +(core) 3391 3948 w +(1989) 3649 3948 w +(ANSI) 3950 3948 w +(C) 4225 3948 w +(language) 4343 3948 w +(with) 4835 3948 w +(some) 720 4068 w +(modest) 1051 4068 w +(extensions,) 1482 4068 w +(a) 2110 4068 w +(greatly) 2235 4068 w +(simplified) 2637 4068 w +(preprocessor,) 3186 4068 w +(a) 3923 4068 w +(smaller) 4047 4068 w +(library) 4470 4068 w +(that) 4849 4068 w +(includes) 720 4188 w +(system) 1182 4188 w +(calls) 1581 4188 w +(and) 1855 4188 w +(related) 2094 4188 w +(facilities,) 2490 4188 w +(and) 2984 4188 w +(a) 3223 4188 w +(completely) 3338 4188 w +(different) 3925 4188 w +(structure) 4403 4188 w +(for) 4901 4188 w +(include files.) 720 4308 w +(Official) 970 4464 w +(ANSI) 1353 4464 w +(C) 1617 4464 w +(accepts) 1724 4464 w +(the) 2126 4464 w +(old) 2319 4464 w +(\(K&R\)) 2510 4464 w +(style) 2812 4464 w +(of) 3076 4464 w +(declarations) 3213 4464 w +(for) 3842 4464 w +(functions;) 4020 4464 w +(the) 4543 4464 w +(Plan) 4737 4464 w +(9) 4977 4464 w +(compilers) 720 4584 w +(are) 1227 4584 w +(more) 1412 4584 w +(demanding.) 1696 4584 w +(Without) 2338 4584 w +(an) 2745 4584 w +(explicit) 2895 4584 w +(run-time) 3283 4584 w +(flag) 3754 4584 w +(\() 3970 4584 w +10 /LucidaTypewriter f +(-B) 4003 4584 w +10 /LucidaSansUnicode00 f +(\) whose use is dis\255) 4147 4584 w +(couraged, the compilers) 720 4704 w +(insist) 1929 4704 w +(on) 2221 4704 w +(new-style) 2377 4704 w +(function) 2888 4704 w +(declarations,) 3322 4704 w +(that) 3977 4704 w +(is,) 4201 4704 w +(prototypes) 4346 4704 w +(for) 4901 4704 w +(function) 720 4824 w +(arguments.) 1154 4824 w +(The) 1770 4824 w +(function) 1984 4824 w +(declarations) 2418 4824 w +(in) 3041 4824 w +(the) 3165 4824 w +(libraries) 3353 4824 w 10 /LucidaSansUnicode20 f -(\031) 3747 4704 w -10 /LucidaSansUnicode00 f -(include) 3812 4704 w -(files) 4197 4704 w -(are) 4432 4704 w -(all in the) 4617 4704 w -(new) 720 4824 w -(style) 954 4824 w -(so) 1218 4824 w -(the) 1369 4824 w -(interfaces) 1563 4824 w -(are) 2077 4824 w -(checked) 2268 4824 w -(at) 2704 4824 w -(compile) 2835 4824 w -(time.) 3256 4824 w -(For) 3574 4824 w -(C) 3769 4824 w -(programmers) 3878 4824 w -(who) 4575 4824 w -(have) 4815 4824 w -(not) 720 4944 w -(yet) 923 4944 w -(switched) 1111 4944 w -(to) 1580 4944 w -(function) 1721 4944 w -(prototypes) 2165 4944 w -(the) 2730 4944 w -(clumsy) 2928 4944 w -(syntax) 3309 4944 w -(may) 3670 4944 w -(seem) 3912 4944 w -(repellent) 4210 4944 w -(but) 4681 4944 w -(the) 4885 4944 w -(payoff) 720 5064 w -(in) 1063 5064 w -(stronger) 1192 5064 w -(typing) 1641 5064 w -(is) 1984 5064 w -(substantial.) 2102 5064 w -(Those) 2735 5064 w -(who) 3066 5064 w -(wish) 3304 5064 w -(to) 3562 5064 w -(import) 3699 5064 w -(existing) 4062 5064 w -(software) 4488 5064 w -(to) 4942 5064 w -(Plan 9 are urged to use the opportunity to update their code.) 720 5184 w -(The) 970 5340 w -(compilers) 1232 5340 w -(include) 1787 5340 w -(an) 2220 5340 w -(integrated) 2418 5340 w -(preprocessor) 2998 5340 w -(that) 3716 5340 w -(accepts) 3989 5340 w -(the) 4435 5340 w -(familiar) 4672 5340 w -10 /LucidaTypewriter f -(#include) 720 5460 w -10 /LucidaSansUnicode00 f -(,) 1296 5460 w -10 /LucidaTypewriter f -(#define) 1362 5460 w -10 /LucidaSansUnicode00 f -(for) 1900 5460 w -(macros) 2073 5460 w -(both) 2459 5460 w -(with) 2716 5460 w -(and) 2955 5460 w -(without) 3169 5460 w -(arguments,) 3567 5460 w -10 /LucidaTypewriter f -(#undef) 4151 5460 w -10 /LucidaSansUnicode00 f -(,) 4583 5460 w -10 /LucidaTypewriter f -(#line) 4648 5460 w -10 /LucidaSansUnicode00 f -(,) 5008 5460 w -10 /LucidaTypewriter f -(#ifdef) 720 5580 w -10 /LucidaSansUnicode00 f -(,) 1152 5580 w -10 /LucidaTypewriter f -(#ifndef) 1227 5580 w -10 /LucidaSansUnicode00 f -(,) 1731 5580 w -(and) 1806 5580 w -10 /LucidaTypewriter f -(#endif) 2029 5580 w -10 /LucidaSansUnicode00 f -(.) 2461 5580 w -(It) 2568 5580 w -(supports) 2677 5580 w -(neither) 3150 5580 w -10 /LucidaTypewriter f -(#if) 3537 5580 w -10 /LucidaSansUnicode00 f -(nor) 3797 5580 w -10 /LucidaTypewriter f -(##) 4005 5580 w -10 /LucidaSansUnicode00 f -(,) 4149 5580 w -(although) 4225 5580 w -(it) 4699 5580 w -(does) 4809 5580 w -(honor) 720 5700 w -(a) 1043 5700 w -(few) 1134 5700 w -10 /LucidaTypewriter f -(#pragmas) 1340 5700 w -10 /LucidaSansUnicode00 f -(.) 1916 5700 w -(The) 2016 5700 w -10 /LucidaTypewriter f -(#if) 2233 5700 w -10 /LucidaSansUnicode00 f -(directive) 2485 5700 w -(was) 2935 5700 w -(omitted) 3154 5700 w -(because) 3566 5700 w -(it) 3996 5700 w -(greatly) 4097 5700 w -(complicates) 4464 5700 w -(the) 720 5820 w -(preprocessor,) 912 5820 w -(is) 1617 5820 w -(never) 1734 5820 w -(necessary,) 2038 5820 w -(and) 2582 5820 w -(is) 2799 5820 w -(usually) 2916 5820 w -(abused.) 3294 5820 w -(Conditional) 3746 5820 w -(compilation) 4341 5820 w -(in) 4949 5820 w -(general) 720 5940 w -(makes) 1138 5940 w -(code) 1508 5940 w -(hard) 1796 5940 w -(to) 2074 5940 w -(understand;) 2229 5940 w -(the) 2870 5940 w -(Plan) 3082 5940 w -(9) 3339 5940 w -(source) 3458 5940 w -(uses) 3836 5940 w -(it) 4112 5940 w -(sparingly.) 4234 5940 w -(Also,) 4798 5940 w -(because) 720 6060 w -(the) 1158 6060 w -(compilers) 1357 6060 w -(remove) 1876 6060 w -(dead) 2280 6060 w -(code,) 2562 6060 w -(regular) 2870 6060 w -10 /LucidaTypewriter f -(if) 3261 6060 w -10 /LucidaSansUnicode00 f -(statements) 3450 6060 w -(with) 4030 6060 w -(constant) 4280 6060 w -(condi\255) 4741 6060 w -(tions) 720 6180 w -(are) 1035 6180 w -(more) 1261 6180 w -(readable) 1586 6180 w -(equivalents) 2078 6180 w -(to) 2704 6180 w -(many) 2876 6180 w -10 /LucidaTypewriter f -(#ifs) 3212 6180 w -10 /LucidaSansUnicode00 f -(.) 3500 6180 w -(To) 3638 6180 w -(compile) 3836 6180 w -(imported) 4292 6180 w -(code) 4809 6180 w -(ineluctably) 720 6300 w -(fouled) 1288 6300 w -(by) 1639 6300 w -10 /LucidaTypewriter f -(#if) 1797 6300 w -10 /LucidaSansUnicode00 f -(there) 2056 6300 w -(is) 2351 6300 w -(a) 2474 6300 w -(separate) 2572 6300 w -(command,) 3030 6300 w -10 /LucidaTypewriter f -(/bin/cpp) 3584 6300 w -10 /LucidaSansUnicode00 f -(,) 4160 6300 w -(that) 4236 6300 w -(implements) 4471 6300 w -(the complete ANSI C preprocessor specification.) 720 6420 w -(Include) 970 6576 w -(files) 1366 6576 w -(fall) 1613 6576 w -(into) 1808 6576 w -(two) 2042 6576 w -(groups:) 2262 6576 w -(machine-dependent) 2679 6576 w -(and) 3708 6576 w -(machine-independent.) 3933 6576 w -(The) 720 6696 w -(machine-independent) 949 6696 w -(files) 2072 6696 w -(occupy) 2321 6696 w -(the) 2708 6696 w -(directory) 2910 6696 w -10 /LucidaTypewriter f -(/sys/include) 3388 6696 w -10 /LucidaSansUnicode00 f -(;) 4252 6696 w -(the) 4331 6696 w -(others) 4533 6696 w -(are) 4888 6696 w -(placed) 720 6816 w -(in) 1071 6816 w -(a) 1196 6816 w -(directory) 1286 6816 w -(appropriate) 1752 6816 w -(to) 2351 6816 w -(the) 2484 6816 w -(machine,) 2674 6816 w -(such) 3149 6816 w -(as) 3410 6816 w -10 /LucidaTypewriter f -(/mips/include) 3551 6816 w -10 /LucidaSansUnicode00 f -(.) 4487 6816 w -(The) 4586 6816 w -(com\255) 4802 6816 w -(piler) 720 6936 w -(searches) 976 6936 w -(for) 1437 6936 w -(include) 1614 6936 w -(files) 2004 6936 w -(first) 2244 6936 w -(in) 2477 6936 w -(the) 2605 6936 w -(machine-dependent) 2797 6936 w -(directory) 3818 6936 w -(and) 4286 6936 w -(then) 4503 6936 w -(in) 4757 6936 w -(the) 4885 6936 w -(machine-independent) 720 7056 w -(directory.) 1842 7056 w -(At) 2384 7056 w -(the) 2537 7056 w -(time) 2739 7056 w -(of) 3001 7056 w -(writing) 3146 7056 w -(there) 3531 7056 w -(are) 3831 7056 w -(thirty-one) 4031 7056 w -(machine-) 4574 7056 w -(independent) 720 7176 w -(include) 1368 7176 w -(files) 1759 7176 w -(and) 2000 7176 w -(two) 2219 7176 w -(\(per) 2432 7176 w -(machine\)) 2663 7176 w -(machine-dependent) 3142 7176 w -(ones:) 4164 7176 w -10 /LucidaTypewriter f -() 4464 7176 w -10 /LucidaSansUnicode00 f -(and) 720 7296 w -10 /LucidaTypewriter f -() 938 7296 w -10 /LucidaSansUnicode00 f -(.) 1298 7296 w -(The) 1400 7296 w -(first) 1619 7296 w -(describes) 1852 7296 w -(the) 2352 7296 w -(layout) 2546 7296 w -(of) 2881 7296 w -(registers) 3018 7296 w -(on) 3481 7296 w -(the) 3643 7296 w -(system) 3837 7296 w -(stack,) 4216 7296 w -(for) 4539 7296 w -(use) 4717 7296 w -(by) 4925 7296 w +(\031) 3747 4824 w +10 /LucidaSansUnicode00 f +(include) 3812 4824 w +(files) 4197 4824 w +(are) 4432 4824 w +(all in the) 4617 4824 w +(new) 720 4944 w +(style) 954 4944 w +(so) 1218 4944 w +(the) 1369 4944 w +(interfaces) 1563 4944 w +(are) 2077 4944 w +(checked) 2268 4944 w +(at) 2704 4944 w +(compile) 2835 4944 w +(time.) 3256 4944 w +(For) 3574 4944 w +(C) 3769 4944 w +(programmers) 3878 4944 w +(who) 4575 4944 w +(have) 4815 4944 w +(not) 720 5064 w +(yet) 923 5064 w +(switched) 1111 5064 w +(to) 1580 5064 w +(function) 1721 5064 w +(prototypes) 2165 5064 w +(the) 2730 5064 w +(clumsy) 2928 5064 w +(syntax) 3309 5064 w +(may) 3670 5064 w +(seem) 3912 5064 w +(repellent) 4210 5064 w +(but) 4681 5064 w +(the) 4885 5064 w +(payoff) 720 5184 w +(in) 1063 5184 w +(stronger) 1192 5184 w +(typing) 1641 5184 w +(is) 1984 5184 w +(substantial.) 2102 5184 w +(Those) 2735 5184 w +(who) 3066 5184 w +(wish) 3304 5184 w +(to) 3562 5184 w +(import) 3699 5184 w +(existing) 4062 5184 w +(software) 4488 5184 w +(to) 4942 5184 w +(Plan 9 are urged to use the opportunity to update their code.) 720 5304 w +(The) 970 5460 w +(compilers) 1232 5460 w +(include) 1787 5460 w +(an) 2220 5460 w +(integrated) 2418 5460 w +(preprocessor) 2998 5460 w +(that) 3716 5460 w +(accepts) 3989 5460 w +(the) 4435 5460 w +(familiar) 4672 5460 w +10 /LucidaTypewriter f +(#include) 720 5580 w +10 /LucidaSansUnicode00 f +(,) 1296 5580 w +10 /LucidaTypewriter f +(#define) 1362 5580 w +10 /LucidaSansUnicode00 f +(for) 1900 5580 w +(macros) 2073 5580 w +(both) 2459 5580 w +(with) 2716 5580 w +(and) 2955 5580 w +(without) 3169 5580 w +(arguments,) 3567 5580 w +10 /LucidaTypewriter f +(#undef) 4151 5580 w +10 /LucidaSansUnicode00 f +(,) 4583 5580 w +10 /LucidaTypewriter f +(#line) 4648 5580 w +10 /LucidaSansUnicode00 f +(,) 5008 5580 w +10 /LucidaTypewriter f +(#ifdef) 720 5700 w +10 /LucidaSansUnicode00 f +(,) 1152 5700 w +10 /LucidaTypewriter f +(#ifndef) 1227 5700 w +10 /LucidaSansUnicode00 f +(,) 1731 5700 w +(and) 1806 5700 w +10 /LucidaTypewriter f +(#endif) 2029 5700 w +10 /LucidaSansUnicode00 f +(.) 2461 5700 w +(It) 2568 5700 w +(supports) 2677 5700 w +(neither) 3150 5700 w +10 /LucidaTypewriter f +(#if) 3537 5700 w +10 /LucidaSansUnicode00 f +(nor) 3797 5700 w +10 /LucidaTypewriter f +(##) 4005 5700 w +10 /LucidaSansUnicode00 f +(,) 4149 5700 w +(although) 4225 5700 w +(it) 4699 5700 w +(does) 4809 5700 w +(honor) 720 5820 w +(a) 1043 5820 w +(few) 1134 5820 w +10 /LucidaTypewriter f +(#pragmas) 1340 5820 w +10 /LucidaSansUnicode00 f +(.) 1916 5820 w +(The) 2016 5820 w +10 /LucidaTypewriter f +(#if) 2233 5820 w +10 /LucidaSansUnicode00 f +(directive) 2485 5820 w +(was) 2935 5820 w +(omitted) 3154 5820 w +(because) 3566 5820 w +(it) 3996 5820 w +(greatly) 4097 5820 w +(complicates) 4464 5820 w +(the) 720 5940 w +(preprocessor,) 912 5940 w +(is) 1617 5940 w +(never) 1734 5940 w +(necessary,) 2038 5940 w +(and) 2582 5940 w +(is) 2799 5940 w +(usually) 2916 5940 w +(abused.) 3294 5940 w +(Conditional) 3746 5940 w +(compilation) 4341 5940 w +(in) 4949 5940 w +(general) 720 6060 w +(makes) 1138 6060 w +(code) 1508 6060 w +(hard) 1796 6060 w +(to) 2074 6060 w +(understand;) 2229 6060 w +(the) 2870 6060 w +(Plan) 3082 6060 w +(9) 3339 6060 w +(source) 3458 6060 w +(uses) 3836 6060 w +(it) 4112 6060 w +(sparingly.) 4234 6060 w +(Also,) 4798 6060 w +(because) 720 6180 w +(the) 1158 6180 w +(compilers) 1357 6180 w +(remove) 1876 6180 w +(dead) 2280 6180 w +(code,) 2562 6180 w +(regular) 2870 6180 w +10 /LucidaTypewriter f +(if) 3261 6180 w +10 /LucidaSansUnicode00 f +(statements) 3450 6180 w +(with) 4030 6180 w +(constant) 4280 6180 w +(condi\255) 4741 6180 w +(tions) 720 6300 w +(are) 1035 6300 w +(more) 1261 6300 w +(readable) 1586 6300 w +(equivalents) 2078 6300 w +(to) 2704 6300 w +(many) 2876 6300 w +10 /LucidaTypewriter f +(#ifs) 3212 6300 w +10 /LucidaSansUnicode00 f +(.) 3500 6300 w +(To) 3638 6300 w +(compile) 3836 6300 w +(imported) 4292 6300 w +(code) 4809 6300 w +(ineluctably) 720 6420 w +(fouled) 1288 6420 w +(by) 1639 6420 w +10 /LucidaTypewriter f +(#if) 1797 6420 w +10 /LucidaSansUnicode00 f +(there) 2056 6420 w +(is) 2351 6420 w +(a) 2474 6420 w +(separate) 2572 6420 w +(command,) 3030 6420 w +10 /LucidaTypewriter f +(/bin/cpp) 3584 6420 w +10 /LucidaSansUnicode00 f +(,) 4160 6420 w +(that) 4236 6420 w +(implements) 4471 6420 w +(the complete ANSI C preprocessor specification.) 720 6540 w +(Include) 970 6696 w +(files) 1366 6696 w +(fall) 1613 6696 w +(into) 1808 6696 w +(two) 2042 6696 w +(groups:) 2262 6696 w +(machine-dependent) 2679 6696 w +(and) 3708 6696 w +(machine-independent.) 3933 6696 w +(The) 720 6816 w +(machine-independent) 949 6816 w +(files) 2072 6816 w +(occupy) 2321 6816 w +(the) 2708 6816 w +(directory) 2910 6816 w +10 /LucidaTypewriter f +(/sys/include) 3388 6816 w +10 /LucidaSansUnicode00 f +(;) 4252 6816 w +(the) 4331 6816 w +(others) 4533 6816 w +(are) 4888 6816 w +(placed) 720 6936 w +(in) 1071 6936 w +(a) 1196 6936 w +(directory) 1286 6936 w +(appropriate) 1752 6936 w +(to) 2351 6936 w +(the) 2484 6936 w +(machine,) 2674 6936 w +(such) 3149 6936 w +(as) 3410 6936 w +10 /LucidaTypewriter f +(/mips/include) 3551 6936 w +10 /LucidaSansUnicode00 f +(.) 4487 6936 w +(The) 4586 6936 w +(com\255) 4802 6936 w +(piler) 720 7056 w +(searches) 976 7056 w +(for) 1437 7056 w +(include) 1614 7056 w +(files) 2004 7056 w +(first) 2244 7056 w +(in) 2477 7056 w +(the) 2605 7056 w +(machine-dependent) 2797 7056 w +(directory) 3818 7056 w +(and) 4286 7056 w +(then) 4503 7056 w +(in) 4757 7056 w +(the) 4885 7056 w +(machine-independent) 720 7176 w +(directory.) 1842 7176 w +(At) 2384 7176 w +(the) 2537 7176 w +(time) 2739 7176 w +(of) 3001 7176 w +(writing) 3146 7176 w +(there) 3531 7176 w +(are) 3831 7176 w +(thirty-one) 4031 7176 w +(machine-) 4574 7176 w +(independent) 720 7296 w +(include) 1368 7296 w +(files) 1759 7296 w +(and) 2000 7296 w +(two) 2219 7296 w +(\(per) 2432 7296 w +(machine\)) 2663 7296 w +(machine-dependent) 3142 7296 w +(ones:) 4164 7296 w +10 /LucidaTypewriter f +() 4464 7296 w cleartomark showpage saveobj restore @@ -4193,461 +4185,474 @@ 2 pagesetup 10 /LucidaSansUnicode00 f (\255 2 \255) 2783 480 w -(the) 720 840 w -(debugger.) 959 840 w -(The) 1572 840 w -(second) 1837 840 w -(defines) 2265 840 w -(some) 2702 840 w -(architecture-dependent) 3046 840 w -(types) 4283 840 w -(such) 4625 840 w -(as) 4934 840 w -10 /LucidaTypewriter f -(jmp_buf) 720 960 w -10 /LucidaSansUnicode00 f -(for) 1256 960 w -10 /LucidaTypewriter f -(setjmp) 1427 960 w -10 /LucidaSansUnicode00 f -(and) 1891 960 w -(the) 2104 960 w -10 /LucidaTypewriter f -(va_arg) 2292 960 w -10 /LucidaSansUnicode00 f -(and) 2757 960 w -10 /LucidaTypewriter f -(va_list) 2970 960 w -10 /LucidaSansUnicode00 f -(macros) 3507 960 w -(for) 3892 960 w -(handling) 4064 960 w -(arguments) 4521 960 w -(to) 720 1080 w -(variadic) 852 1080 w -(functions,) 1260 1080 w -(as) 1777 1080 w -(well) 1916 1080 w -(as) 2140 1080 w -(a) 2279 1080 w -(set) 2367 1080 w -(of) 2544 1080 w -10 /LucidaTypewriter f -(typedef) 2675 1080 w -10 /LucidaSansUnicode00 f -(abbreviations) 3212 1080 w -(for) 3899 1080 w -10 /LucidaTypewriter f -(unsigned) 4071 1080 w -(short) 4680 1080 w -10 /LucidaSansUnicode00 f -(and so on.) 720 1200 w -(Here is an excerpt from) 970 1356 w -10 /LucidaTypewriter f -(/68020/include/u.h) 2151 1356 w -10 /LucidaSansUnicode00 f -(:) 3447 1356 w +(and) 720 840 w +10 /LucidaTypewriter f +() 938 840 w +10 /LucidaSansUnicode00 f +(.) 1298 840 w +(The) 1400 840 w +(first) 1619 840 w +(describes) 1852 840 w +(the) 2352 840 w +(layout) 2546 840 w +(of) 2881 840 w +(registers) 3018 840 w +(on) 3481 840 w +(the) 3643 840 w +(system) 3837 840 w +(stack,) 4216 840 w +(for) 4539 840 w +(use) 4717 840 w +(by) 4925 840 w +(the) 720 960 w +(debugger.) 959 960 w +(The) 1572 960 w +(second) 1837 960 w +(defines) 2265 960 w +(some) 2702 960 w +(architecture-dependent) 3046 960 w +(types) 4283 960 w +(such) 4625 960 w +(as) 4934 960 w +10 /LucidaTypewriter f +(jmp_buf) 720 1080 w +10 /LucidaSansUnicode00 f +(for) 1256 1080 w +10 /LucidaTypewriter f +(setjmp) 1427 1080 w +10 /LucidaSansUnicode00 f +(and) 1891 1080 w +(the) 2104 1080 w +10 /LucidaTypewriter f +(va_arg) 2292 1080 w +10 /LucidaSansUnicode00 f +(and) 2757 1080 w +10 /LucidaTypewriter f +(va_list) 2970 1080 w +10 /LucidaSansUnicode00 f +(macros) 3507 1080 w +(for) 3892 1080 w +(handling) 4064 1080 w +(arguments) 4521 1080 w +(to) 720 1200 w +(variadic) 852 1200 w +(functions,) 1260 1200 w +(as) 1777 1200 w +(well) 1916 1200 w +(as) 2140 1200 w +(a) 2279 1200 w +(set) 2367 1200 w +(of) 2544 1200 w +10 /LucidaTypewriter f +(typedef) 2675 1200 w +10 /LucidaSansUnicode00 f +(abbreviations) 3212 1200 w +(for) 3899 1200 w +10 /LucidaTypewriter f +(unsigned) 4071 1200 w +(short) 4680 1200 w +10 /LucidaSansUnicode00 f +(and so on.) 720 1320 w +(Here is an excerpt from) 970 1476 w +10 /LucidaTypewriter f +(/68020/include/u.h) 2151 1476 w +10 /LucidaSansUnicode00 f +(:) 3447 1476 w 9 /LucidaTypewriter f -(#define) 1008 1526 w -(nil) 1528 1526 w -(\(\(void*\)0\)) 2568 1526 w -(typedef) 1008 1636 w -(unsigned) 1528 1636 w -(short) 2113 1636 w -(ushort;) 2568 1636 w -(typedef) 1008 1746 w -(unsigned) 1528 1746 w -(char) 2113 1746 w -(uchar;) 2568 1746 w -(typedef) 1008 1856 w -(unsigned) 1528 1856 w -(long) 2113 1856 w -(ulong;) 2568 1856 w -(typedef) 1008 1966 w -(unsigned) 1528 1966 w -(int) 2113 1966 w -(uint;) 2568 1966 w -(typedef) 1008 2076 w -(signed) 1658 2076 w -(char) 2113 2076 w -(schar;) 2568 2076 w -(typedef) 1008 2186 w -(long) 1528 2186 w -(long) 1853 2186 w -(vlong;) 2568 2186 w -(typedef) 1008 2406 w -(long) 1528 2406 w -(jmp_buf[2];) 2048 2406 w -(#define) 1008 2516 w -(JMPBUFSP) 1528 2516 w -(0) 2568 2516 w -(#define) 1008 2626 w -(JMPBUFPC) 1528 2626 w -(1) 2568 2626 w -(#define) 1008 2736 w -(JMPBUFDPC) 1528 2736 w -(0) 2568 2736 w -10 /LucidaSansUnicode00 f -(Plan) 720 2916 w -(9) 958 2916 w -(programs) 1058 2916 w -(use) 1562 2916 w -10 /LucidaTypewriter f -(nil) 1768 2916 w -10 /LucidaSansUnicode00 f -(for) 2021 2916 w -(the) 2197 2916 w -(name) 2389 2916 w -(of) 2692 2916 w -(the) 2827 2916 w -(zero-valued) 3019 2916 w -(pointer.) 3646 2916 w -(The) 4097 2916 w -(type) 4316 2916 w -10 /LucidaTypewriter f -(vlong) 4562 2916 w -10 /LucidaSansUnicode00 f -(is) 4960 2916 w -(the) 720 3036 w -(largest) 910 3036 w -(integer) 1276 3036 w -(type) 1654 3036 w -(available;) 1896 3036 w -(on) 2385 3036 w -(most) 2542 3036 w -(architectures) 2818 3036 w -(it) 3481 3036 w -(is) 3581 3036 w -(a) 3695 3036 w -(64-bit) 3784 3036 w -(value.) 4131 3036 w -(A) 4483 3036 w -(couple) 4586 3036 w -(of) 4942 3036 w -(other types in) 720 3156 w -10 /LucidaTypewriter f -() 1423 3156 w -10 /LucidaSansUnicode00 f -(are) 1815 3156 w -10 /LucidaTypewriter f -(u32int) 1999 3156 w -10 /LucidaSansUnicode00 f -(, which is guaranteed to have exactly 32 bits \(a) 2431 3156 w -(possi\255) 4752 3156 w -(bility) 720 3276 w -(on) 992 3276 w -(all) 1148 3276 w -(the) 1294 3276 w -(supported) 1482 3276 w -(architectures\)) 2012 3276 w -(and) 2707 3276 w -10 /LucidaTypewriter f -(mpdigit) 2920 3276 w -10 /LucidaSansUnicode00 f -(,) 3424 3276 w -(which) 3489 3276 w -(is) 3803 3276 w -(used) 3916 3276 w -(by) 4181 3276 w -(the) 4329 3276 w -(multipreci\255) 4517 3276 w -(sion) 720 3396 w -(math) 1006 3396 w -(package) 1336 3396 w -10 /LucidaTypewriter f -() 1819 3396 w -10 /LucidaSansUnicode00 f -(.) 2251 3396 w -(The) 2398 3396 w -10 /LucidaTypewriter f -(#define) 2662 3396 w -10 /LucidaSansUnicode00 f -(constants) 3249 3396 w -(permit) 3800 3396 w -(an) 4203 3396 w -(architecture-) 4404 3396 w -(independent) 720 3516 w -(\(but) 1427 3516 w -(compiler-dependent\)) 1720 3516 w -(implementation) 2850 3516 w -(of) 3710 3516 w -(stack-switching) 3906 3516 w -(using) 4774 3516 w -10 /LucidaTypewriter f -(setjmp) 720 3636 w -10 /LucidaSansUnicode00 f -(and) 1184 3636 w -10 /LucidaTypewriter f -(longjmp) 1396 3636 w -10 /LucidaSansUnicode00 f -(.) 1900 3636 w -(Every Plan 9 C program begins) 970 3792 w +(#define) 920 1646 w +(nil) 1440 1646 w +(\(\(void*\)0\)) 2480 1646 w +(typedef) 920 1756 w +(unsigned) 1440 1756 w +(short) 2025 1756 w +(ushort;) 2480 1756 w +(typedef) 920 1866 w +(unsigned) 1440 1866 w +(char) 2025 1866 w +(uchar;) 2480 1866 w +(typedef) 920 1976 w +(unsigned) 1440 1976 w +(long) 2025 1976 w +(ulong;) 2480 1976 w +(typedef) 920 2086 w +(unsigned) 1440 2086 w +(int) 2025 2086 w +(uint;) 2480 2086 w +(typedef) 920 2196 w +(signed) 1570 2196 w +(char) 2025 2196 w +(schar;) 2480 2196 w +(typedef) 920 2306 w +(long) 1440 2306 w +(long) 1765 2306 w +(vlong;) 2480 2306 w +(typedef) 920 2526 w +(long) 1440 2526 w +(jmp_buf[2];) 1960 2526 w +(#define) 920 2636 w +(JMPBUFSP) 1440 2636 w +(0) 2480 2636 w +(#define) 920 2746 w +(JMPBUFPC) 1440 2746 w +(1) 2480 2746 w +(#define) 920 2856 w +(JMPBUFDPC) 1440 2856 w +(0) 2480 2856 w +10 /LucidaSansUnicode00 f +(Plan) 720 3036 w +(9) 958 3036 w +(programs) 1058 3036 w +(use) 1562 3036 w +10 /LucidaTypewriter f +(nil) 1768 3036 w +10 /LucidaSansUnicode00 f +(for) 2021 3036 w +(the) 2197 3036 w +(name) 2389 3036 w +(of) 2692 3036 w +(the) 2827 3036 w +(zero-valued) 3019 3036 w +(pointer.) 3646 3036 w +(The) 4097 3036 w +(type) 4316 3036 w +10 /LucidaTypewriter f +(vlong) 4562 3036 w +10 /LucidaSansUnicode00 f +(is) 4960 3036 w +(the) 720 3156 w +(largest) 910 3156 w +(integer) 1276 3156 w +(type) 1654 3156 w +(available;) 1896 3156 w +(on) 2385 3156 w +(most) 2542 3156 w +(architectures) 2818 3156 w +(it) 3481 3156 w +(is) 3581 3156 w +(a) 3695 3156 w +(64-bit) 3784 3156 w +(value.) 4131 3156 w +(A) 4483 3156 w +(couple) 4586 3156 w +(of) 4942 3156 w +(other types in) 720 3276 w +10 /LucidaTypewriter f +() 1423 3276 w +10 /LucidaSansUnicode00 f +(are) 1815 3276 w +10 /LucidaTypewriter f +(u32int) 1999 3276 w +10 /LucidaSansUnicode00 f +(, which is guaranteed to have exactly 32 bits \(a) 2431 3276 w +(possi\255) 4752 3276 w +(bility) 720 3396 w +(on) 992 3396 w +(all) 1148 3396 w +(the) 1294 3396 w +(supported) 1482 3396 w +(architectures\)) 2012 3396 w +(and) 2707 3396 w +10 /LucidaTypewriter f +(mpdigit) 2920 3396 w +10 /LucidaSansUnicode00 f +(,) 3424 3396 w +(which) 3489 3396 w +(is) 3803 3396 w +(used) 3916 3396 w +(by) 4181 3396 w +(the) 4329 3396 w +(multipreci\255) 4517 3396 w +(sion) 720 3516 w +(math) 1006 3516 w +(package) 1336 3516 w +10 /LucidaTypewriter f +() 1819 3516 w +10 /LucidaSansUnicode00 f +(.) 2251 3516 w +(The) 2398 3516 w +10 /LucidaTypewriter f +(#define) 2662 3516 w +10 /LucidaSansUnicode00 f +(constants) 3249 3516 w +(permit) 3800 3516 w +(an) 4203 3516 w +(architecture-) 4404 3516 w +(independent) 720 3636 w +(\(but) 1427 3636 w +(compiler-dependent\)) 1720 3636 w +(implementation) 2850 3636 w +(of) 3710 3636 w +(stack-switching) 3906 3636 w +(using) 4774 3636 w +10 /LucidaTypewriter f +(setjmp) 720 3756 w +10 /LucidaSansUnicode00 f +(and) 1184 3756 w +10 /LucidaTypewriter f +(longjmp) 1396 3756 w +10 /LucidaSansUnicode00 f +(.) 1900 3756 w +(Every Plan 9 C program begins) 970 3912 w 9 /LucidaTypewriter f -(#include) 1008 3962 w -() 1593 3962 w -10 /LucidaSansUnicode00 f -(because all the other installed header files use the) 720 4142 w -10 /LucidaTypewriter f -(typedefs) 3197 4142 w -10 /LucidaSansUnicode00 f -(declared in) 3805 4142 w -10 /LucidaTypewriter f -() 4374 4142 w -10 /LucidaSansUnicode00 f -(.) 4734 4142 w -(In) 970 4298 w -(strict) 1107 4298 w -(ANSI) 1399 4298 w -(C,) 1672 4298 w -(include) 1820 4298 w -(files) 2219 4298 w -(are) 2468 4298 w -(grouped) 2667 4298 w -(to) 3122 4298 w -(collect) 3267 4298 w -(related) 3628 4298 w -(functions) 4012 4298 w -(in) 4511 4298 w -(a) 4649 4298 w -(single) 4751 4298 w -(file:) 720 4418 w -(one) 943 4418 w -(for) 1162 4418 w -(string) 1341 4418 w -(functions,) 1663 4418 w -(one) 2187 4418 w -(for) 2406 4418 w -(memory) 2585 4418 w -(functions,) 3021 4418 w -(one) 3545 4418 w -(for) 3764 4418 w -(I/O,) 3943 4418 w -(and) 4175 4418 w -(none) 4395 4418 w -(for) 4675 4418 w -(sys\255) 4853 4418 w -(tem) 720 4538 w -(calls.) 952 4538 w -(Each) 1277 4538 w -(include) 1545 4538 w -(file) 1943 4538 w -(is) 2140 4538 w -(protected) 2266 4538 w -(by) 2777 4538 w -(an) 2939 4538 w -10 /LucidaTypewriter f -(#ifdef) 3103 4538 w -10 /LucidaSansUnicode00 f -(to) 3582 4538 w -(guarantee) 3727 4538 w -(its) 4260 4538 w -(contents) 4424 4538 w -(are) 4888 4538 w -(seen) 720 4658 w -(by) 991 4658 w -(the) 1152 4658 w -(compiler) 1353 4658 w -(only) 1822 4658 w -(once.) 2072 4658 w -(Plan) 2411 4658 w -(9) 2657 4658 w -(takes) 2765 4658 w -(a) 3067 4658 w -(different) 3167 4658 w -(approach.) 3630 4658 w -(Other) 4190 4658 w -(than) 4509 4658 w -(a) 4770 4658 w -(few) 4870 4658 w -(include) 720 4778 w -(files) 1107 4778 w -(that) 1344 4778 w -(define) 1570 4778 w -(external) 1908 4778 w -(formats) 2340 4778 w -(such) 2751 4778 w -(as) 3013 4778 w -(archives,) 3155 4778 w -(the) 3620 4778 w -(files) 3811 4778 w -(in) 4049 4778 w -10 /LucidaTypewriter f -(/sys/include) 4176 4778 w -10 /LucidaSansUnicode00 f -(correspond) 720 4898 w -(to) 1316 4898 w +(#include) 920 4082 w +() 1505 4082 w +10 /LucidaSansUnicode00 f +(because all the other installed header files use the) 720 4262 w +10 /LucidaTypewriter f +(typedefs) 3197 4262 w +10 /LucidaSansUnicode00 f +(declared in) 3805 4262 w +10 /LucidaTypewriter f +() 4374 4262 w +10 /LucidaSansUnicode00 f +(.) 4734 4262 w +(In) 970 4418 w +(strict) 1107 4418 w +(ANSI) 1399 4418 w +(C,) 1672 4418 w +(include) 1820 4418 w +(files) 2219 4418 w +(are) 2468 4418 w +(grouped) 2667 4418 w +(to) 3122 4418 w +(collect) 3267 4418 w +(related) 3628 4418 w +(functions) 4012 4418 w +(in) 4511 4418 w +(a) 4649 4418 w +(single) 4751 4418 w +(file:) 720 4538 w +(one) 943 4538 w +(for) 1162 4538 w +(string) 1341 4538 w +(functions,) 1663 4538 w +(one) 2187 4538 w +(for) 2406 4538 w +(memory) 2585 4538 w +(functions,) 3021 4538 w +(one) 3545 4538 w +(for) 3764 4538 w +(I/O,) 3943 4538 w +(and) 4175 4538 w +(none) 4395 4538 w +(for) 4675 4538 w +(sys\255) 4853 4538 w +(tem) 720 4658 w +(calls.) 952 4658 w +(Each) 1277 4658 w +(include) 1545 4658 w +(file) 1943 4658 w +(is) 2140 4658 w +(protected) 2266 4658 w +(by) 2777 4658 w +(an) 2939 4658 w +10 /LucidaTypewriter f +(#ifdef) 3103 4658 w +10 /LucidaSansUnicode00 f +(to) 3582 4658 w +(guarantee) 3727 4658 w +(its) 4260 4658 w +(contents) 4424 4658 w +(are) 4888 4658 w +(seen) 720 4778 w +(by) 991 4778 w +(the) 1152 4778 w +(compiler) 1353 4778 w +(only) 1822 4778 w +(once.) 2072 4778 w +(Plan) 2411 4778 w +(9) 2657 4778 w +(takes) 2765 4778 w +(a) 3067 4778 w +(different) 3167 4778 w +(approach.) 3630 4778 w +(Other) 4190 4778 w +(than) 4509 4778 w +(a) 4770 4778 w +(few) 4870 4778 w +(include) 720 4898 w +(files) 1107 4898 w +(that) 1344 4898 w +(define) 1570 4898 w +(external) 1908 4898 w +(formats) 2340 4898 w +(such) 2751 4898 w +(as) 3013 4898 w +(archives,) 3155 4898 w +(the) 3620 4898 w +(files) 3811 4898 w +(in) 4049 4898 w +10 /LucidaTypewriter f +(/sys/include) 4176 4898 w +10 /LucidaSansUnicode00 f +(correspond) 720 5018 w +(to) 1316 5018 w 10 /LucidaSans-Italic f -(libraries.) 1460 4898 w -10 /LucidaSansUnicode00 f -(If) 1977 4898 w -(a) 2089 4898 w -(program) 2190 4898 w -(is) 2652 4898 w -(using) 2778 4898 w -(a) 3090 4898 w -(library,) 3191 4898 w -(it) 3578 4898 w -(includes) 3689 4898 w -(the) 4137 4898 w -(corresponding) 4337 4898 w -(header.) 720 5018 w -(The) 1153 5018 w -(default) 1370 5018 w -(C) 1745 5018 w -(library) 1850 5018 w -(comprises) 2196 5018 w -(string) 2728 5018 w -(functions,) 3046 5018 w -(memory) 3566 5018 w -(functions,) 3998 5018 w -(and) 4519 5018 w -(so) 4736 5018 w -(on,) 4885 5018 w -(largely) 720 5138 w -(as) 1084 5138 w -(in) 1230 5138 w -(ANSI) 1361 5138 w -(C,) 1627 5138 w -(some) 1768 5138 w -(formatted) 2069 5138 w -(I/O) 2589 5138 w -(routines,) 2789 5138 w -(plus) 3260 5138 w -(all) 3505 5138 w -(the) 3657 5138 w -(system) 3851 5138 w -(calls) 4230 5138 w -(and) 4484 5138 w -(related) 4703 5138 w -(functions.) 720 5258 w -(To) 1276 5258 w -(use) 1440 5258 w -(these) 1649 5258 w -(functions,) 1951 5258 w -(one) 2475 5258 w -(must) 2694 5258 w -10 /LucidaTypewriter f -(#include) 2977 5258 w -10 /LucidaSansUnicode00 f -(the) 3593 5258 w -(file) 3788 5258 w -10 /LucidaTypewriter f -() 3979 5258 w -10 /LucidaSansUnicode00 f -(,) 4555 5258 w -(which) 4627 5258 w -(in) 4949 5258 w -(turn) 720 5378 w -(must) 962 5378 w -(follow) 1245 5378 w -10 /LucidaTypewriter f -() 1579 5378 w -10 /LucidaSansUnicode00 f -(,) 1939 5378 w -(to) 2011 5378 w -(define) 2149 5378 w -(their) 2492 5378 w -(prototypes) 2757 5378 w -(for) 3319 5378 w -(the) 3498 5378 w -(compiler.) 3693 5378 w -(Here) 4220 5378 w -(is) 4487 5378 w -(the) 4607 5378 w -(com\255) 4802 5378 w -(plete source to the traditional first C program:) 720 5498 w +(libraries.) 1460 5018 w +10 /LucidaSansUnicode00 f +(If) 1977 5018 w +(a) 2089 5018 w +(program) 2190 5018 w +(is) 2652 5018 w +(using) 2778 5018 w +(a) 3090 5018 w +(library,) 3191 5018 w +(it) 3578 5018 w +(includes) 3689 5018 w +(the) 4137 5018 w +(corresponding) 4337 5018 w +(header.) 720 5138 w +(The) 1153 5138 w +(default) 1370 5138 w +(C) 1745 5138 w +(library) 1850 5138 w +(comprises) 2196 5138 w +(string) 2728 5138 w +(functions,) 3046 5138 w +(memory) 3566 5138 w +(functions,) 3998 5138 w +(and) 4519 5138 w +(so) 4736 5138 w +(on,) 4885 5138 w +(largely) 720 5258 w +(as) 1084 5258 w +(in) 1230 5258 w +(ANSI) 1361 5258 w +(C,) 1627 5258 w +(some) 1768 5258 w +(formatted) 2069 5258 w +(I/O) 2589 5258 w +(routines,) 2789 5258 w +(plus) 3260 5258 w +(all) 3505 5258 w +(the) 3657 5258 w +(system) 3851 5258 w +(calls) 4230 5258 w +(and) 4484 5258 w +(related) 4703 5258 w +(functions.) 720 5378 w +(To) 1276 5378 w +(use) 1440 5378 w +(these) 1649 5378 w +(functions,) 1951 5378 w +(one) 2475 5378 w +(must) 2694 5378 w +10 /LucidaTypewriter f +(#include) 2977 5378 w +10 /LucidaSansUnicode00 f +(the) 3593 5378 w +(file) 3788 5378 w +10 /LucidaTypewriter f +() 3979 5378 w +10 /LucidaSansUnicode00 f +(,) 4555 5378 w +(which) 4627 5378 w +(in) 4949 5378 w +(turn) 720 5498 w +(must) 962 5498 w +(follow) 1245 5498 w +10 /LucidaTypewriter f +() 1579 5498 w +10 /LucidaSansUnicode00 f +(,) 1939 5498 w +(to) 2011 5498 w +(define) 2149 5498 w +(their) 2492 5498 w +(prototypes) 2757 5498 w +(for) 3319 5498 w +(the) 3498 5498 w +(compiler.) 3693 5498 w +(Here) 4220 5498 w +(is) 4487 5498 w +(the) 4607 5498 w +(com\255) 4802 5498 w +(plete source to the traditional first C program:) 720 5618 w 9 /LucidaTypewriter f -(#include) 1008 5668 w -() 1593 5668 w -(#include) 1008 5778 w -() 1593 5778 w -(void) 1008 5998 w -(main\(void\)) 1008 6108 w -({) 1008 6218 w -(print\("hello) 1528 6328 w -(world\\n"\);) 2373 6328 w -(exits\(0\);) 1528 6438 w -(}) 1008 6548 w -10 /LucidaSansUnicode00 f -(The) 720 6728 w -10 /LucidaTypewriter f -(print) 957 6728 w -10 /LucidaSansUnicode00 f -(routine) 1373 6728 w -(and) 1777 6728 w -(its) 2013 6728 w -(relatives) 2186 6728 w -10 /LucidaTypewriter f -(fprint) 2648 6728 w -10 /LucidaSansUnicode00 f -(and) 3136 6728 w -10 /LucidaTypewriter f -(sprint) 3372 6728 w -10 /LucidaSansUnicode00 f -(resemble) 3860 6728 w -(the) 4362 6728 w -(similarly-) 4574 6728 w -(named) 720 6848 w -(functions) 1084 6848 w -(in) 1571 6848 w -(Standard) 1697 6848 w -(I/O) 2162 6848 w -(but) 2357 6848 w -(are) 2554 6848 w -(not) 2741 6848 w -(attached) 2936 6848 w -(to) 3387 6848 w -(a) 3520 6848 w -(specific) 3610 6848 w -(I/O) 4012 6848 w -(library.) 4207 6848 w -(In) 4616 6848 w -(Plan) 4742 6848 w -(9) 4977 6848 w -10 /LucidaTypewriter f -(main) 720 6968 w -10 /LucidaSansUnicode00 f -(is) 1055 6968 w -(not) 1182 6968 w -(integer-valued;) 1389 6968 w -(it) 2186 6968 w -(should) 2299 6968 w -(call) 2674 6968 w -10 /LucidaTypewriter f -(exits) 2885 6968 w -10 /LucidaSansUnicode00 f -(,) 3245 6968 w -(which) 3324 6968 w -(takes) 3652 6968 w -(a) 3956 6968 w -(string) 4059 6968 w -(argument) 4389 6968 w -(\(or) 4905 6968 w -(null;) 720 7088 w -(here) 969 7088 w -(ANSI) 1219 7088 w -(C) 1480 7088 w -(promotes) 1584 7088 w -(the) 2082 7088 w -(0) 2272 7088 w -(to) 2370 7088 w -(a) 2503 7088 w -10 /LucidaTypewriter f -(char*) 2593 7088 w -10 /LucidaSansUnicode00 f -(\).) 2953 7088 w -(All) 3085 7088 w -(these) 3247 7088 w -(functions) 3544 7088 w -(are,) 4031 7088 w -(of) 4250 7088 w -(course,) 4382 7088 w -(docu\255) 4770 7088 w -(mented in the Programmer) 720 7208 w -10 /LucidaSansUnicode20 f -(\031) 2027 7208 w -10 /LucidaSansUnicode00 f -(s Manual.) 2059 7208 w +(#include) 920 5788 w +() 1505 5788 w +(#include) 920 5898 w +() 1505 5898 w +(void) 920 6118 w +(main\(void\)) 920 6228 w +({) 920 6338 w +(print\("hello) 1440 6448 w +(world\\n"\);) 2285 6448 w +(exits\(0\);) 1440 6558 w +(}) 920 6668 w +10 /LucidaSansUnicode00 f +(The) 720 6848 w +10 /LucidaTypewriter f +(print) 957 6848 w +10 /LucidaSansUnicode00 f +(routine) 1373 6848 w +(and) 1777 6848 w +(its) 2013 6848 w +(relatives) 2186 6848 w +10 /LucidaTypewriter f +(fprint) 2648 6848 w +10 /LucidaSansUnicode00 f +(and) 3136 6848 w +10 /LucidaTypewriter f +(sprint) 3372 6848 w +10 /LucidaSansUnicode00 f +(resemble) 3860 6848 w +(the) 4362 6848 w +(similarly-) 4574 6848 w +(named) 720 6968 w +(functions) 1084 6968 w +(in) 1571 6968 w +(Standard) 1697 6968 w +(I/O) 2162 6968 w +(but) 2357 6968 w +(are) 2554 6968 w +(not) 2741 6968 w +(attached) 2936 6968 w +(to) 3387 6968 w +(a) 3520 6968 w +(specific) 3610 6968 w +(I/O) 4012 6968 w +(library.) 4207 6968 w +(In) 4616 6968 w +(Plan) 4742 6968 w +(9) 4977 6968 w +10 /LucidaTypewriter f +(main) 720 7088 w +10 /LucidaSansUnicode00 f +(is) 1055 7088 w +(not) 1182 7088 w +(integer-valued;) 1389 7088 w +(it) 2186 7088 w +(should) 2299 7088 w +(call) 2674 7088 w +10 /LucidaTypewriter f +(exits) 2885 7088 w +10 /LucidaSansUnicode00 f +(,) 3245 7088 w +(which) 3324 7088 w +(takes) 3652 7088 w +(a) 3956 7088 w +(string) 4059 7088 w +(argument) 4389 7088 w +(\(or) 4905 7088 w +(null;) 720 7208 w +(here) 990 7208 w +(ANSI) 1261 7208 w +(C) 1543 7208 w +(promotes) 1667 7208 w +(the) 2185 7208 w +(0) 2395 7208 w +(to) 2513 7208 w +(a) 2666 7208 w +10 /LucidaTypewriter f +(char*) 2776 7208 w +10 /LucidaSansUnicode00 f +(\).) 3136 7208 w +(All) 3288 7208 w +(these) 3470 7208 w +(functions) 3787 7208 w +(are,) 4294 7208 w +(of) 4533 7208 w +(course,) 4686 7208 w cleartomark showpage saveobj restore @@ -4658,580 +4663,564 @@ 3 pagesetup 10 /LucidaSansUnicode00 f (\255 3 \255) 2783 480 w -(To) 970 840 w -(use) 1135 840 w -10 /LucidaTypewriter f -(printf) 1345 840 w -10 /LucidaSansUnicode00 f -(,) 1777 840 w -10 /LucidaTypewriter f -() 1851 840 w -10 /LucidaSansUnicode00 f -(must) 2541 840 w -(be) 2826 840 w -(included) 2987 840 w -(to) 3444 840 w -(define) 3584 840 w -(the) 3929 840 w -(function) 4126 840 w -(prototype) 4569 840 w -(for) 720 960 w -10 /LucidaTypewriter f -(printf) 891 960 w -10 /LucidaSansUnicode00 f -(:) 1323 960 w +(documented in the Programmer) 720 840 w +10 /LucidaSansUnicode20 f +(\031) 2264 840 w +10 /LucidaSansUnicode00 f +(s Manual.) 2296 840 w +(To) 970 996 w +(use) 1135 996 w +10 /LucidaTypewriter f +(printf) 1345 996 w +10 /LucidaSansUnicode00 f +(,) 1777 996 w +10 /LucidaTypewriter f +() 1851 996 w +10 /LucidaSansUnicode00 f +(must) 2541 996 w +(be) 2826 996 w +(included) 2987 996 w +(to) 3444 996 w +(define) 3584 996 w +(the) 3929 996 w +(function) 4126 996 w +(prototype) 4569 996 w +(for) 720 1116 w +10 /LucidaTypewriter f +(printf) 891 1116 w +10 /LucidaSansUnicode00 f +(:) 1323 1116 w 9 /LucidaTypewriter f -(#include) 1008 1130 w -() 1593 1130 w -(#include) 1008 1240 w -() 1593 1240 w -(#include) 1008 1350 w -() 1593 1350 w -(void) 1008 1570 w -(main\(int) 1008 1680 w -(argc,) 1593 1680 w -(char) 1983 1680 w -(*argv[]\)) 2308 1680 w -({) 1008 1790 w -(printf\("%s:) 1528 1900 w -(hello) 2308 1900 w -(world;) 2698 1900 w -(argc) 3153 1900 w -(=) 3478 1900 w -(%d\\n",) 3608 1900 w -(argv[0],) 4063 1900 w -(argc\);) 4648 1900 w -(exits\(0\);) 1528 2010 w -(}) 1008 2120 w -10 /LucidaSansUnicode00 f -(In) 720 2300 w -(practice,) 857 2300 w -(Standard) 1318 2300 w -(I/O) 1794 2300 w -(is) 2000 2300 w -(not) 2126 2300 w -(used) 2332 2300 w -(much) 2610 2300 w -(in) 2924 2300 w -(Plan) 3061 2300 w -(9.) 3308 2300 w -(I/O) 3481 2300 w -(libraries) 3687 2300 w -(are) 4127 2300 w -(discussed) 4325 2300 w -(in) 4848 2300 w -(a) 4985 2300 w -(later section of this document.) 720 2420 w -(There) 970 2576 w -(are) 1284 2576 w -(libraries) 1472 2576 w -(for) 1902 2576 w -(handling) 2077 2576 w -(regular) 2537 2576 w -(expressions,) 2919 2576 w -(raster) 3570 2576 w -(graphics,) 3888 2576 w -(windows,) 4371 2576 w -(and) 4860 2576 w -(so) 720 2696 w -(on,) 866 2696 w -(and) 1055 2696 w -(each) 1269 2696 w -(has) 1527 2696 w -(an) 1729 2696 w -(associated) 1880 2696 w -(include) 2423 2696 w -(file.) 2809 2696 w -(The) 3058 2696 w -(manual) 3273 2696 w -(for) 3663 2696 w -(each) 3836 2696 w -(library) 4094 2696 w -(states) 4438 2696 w -(which) 4759 2696 w -(include) 720 2816 w -(files) 1127 2816 w -(are) 1384 2816 w -(needed.) 1591 2816 w -(The) 2067 2816 w -(files) 2304 2816 w -(are) 2562 2816 w -(not) 2770 2816 w -(protected) 2986 2816 w -(against) 3507 2816 w -(multiple) 3914 2816 w -(inclusion) 4368 2816 w -(and) 4860 2816 w -(themselves) 720 2936 w -(contain) 1316 2936 w -(no) 1726 2936 w -(nested) 1902 2936 w -10 /LucidaTypewriter f -(#includes) 2280 2936 w -10 /LucidaSansUnicode00 f -(.) 2928 2936 w -(Instead) 3045 2936 w -(the) 3450 2936 w -(programmer) 3657 2936 w -(is) 4315 2936 w -(expected) 4447 2936 w -(to) 4942 2936 w -(sort) 720 3056 w -(out) 944 3056 w -(the) 1138 3056 w -(requirements) 1327 3056 w -(and) 2009 3056 w -(to) 2224 3056 w -10 /LucidaTypewriter f -(#include) 2357 3056 w -10 /LucidaSansUnicode00 f -(the) 2968 3056 w -(necessary) 3158 3056 w -(files) 3668 3056 w -(once) 3905 3056 w -(at) 4170 3056 w -(the) 4297 3056 w -(top) 4487 3056 w -(of) 4683 3056 w -(each) 4816 3056 w -(source) 720 3176 w -(file.) 1080 3176 w -(In) 1333 3176 w -(practice) 1462 3176 w -(this) 1883 3176 w -(is) 2100 3176 w -(trivial:) 2218 3176 w -(this) 2560 3176 w -(way) 2777 3176 w -(of) 2999 3176 w -(handling) 3135 3176 w -(include) 3597 3176 w -(files) 3987 3176 w -(is) 4227 3176 w -(so) 4345 3176 w -(straightfor\255) 4494 3176 w -(ward that it is rare for a source file to contain more than half a dozen) 720 3296 w -10 /LucidaTypewriter f -(#includes) 4124 3296 w -10 /LucidaSansUnicode00 f -(.) 4772 3296 w -(The) 970 3452 w -(compilers) 1214 3452 w -(do) 1751 3452 w -(their) 1938 3452 w -(own) 2226 3452 w -(register) 2489 3452 w -(allocation) 2925 3452 w -(so) 3457 3452 w -(the) 3632 3452 w -10 /LucidaTypewriter f -(register) 3850 3452 w -10 /LucidaSansUnicode00 f -(keyword) 4489 3452 w -(is) 4960 3452 w -(ignored.) 720 3572 w -(For different reasons,) 1190 3572 w -10 /LucidaTypewriter f -(volatile) 2269 3572 w -10 /LucidaSansUnicode00 f -(and) 2877 3572 w -10 /LucidaTypewriter f -(const) 3089 3572 w -10 /LucidaSansUnicode00 f -(are also ignored.) 3481 3572 w -(To) 970 3728 w -(make) 1141 3728 w -(it) 1450 3728 w -(easier) 1563 3728 w -(to) 1898 3728 w -(share) 2043 3728 w -(code) 2355 3728 w -(with) 2633 3728 w -(other) 2885 3728 w -(systems,) 3189 3728 w -(Plan) 3660 3728 w -(9) 3909 3728 w -(has) 4020 3728 w -(a) 4236 3728 w -(version) 4339 3728 w -(of) 4739 3728 w -(the) 4885 3728 w -(compiler,) 720 3848 w -10 /LucidaTypewriter f -(pcc) 1219 3848 w -10 /LucidaSansUnicode00 f -(,) 1435 3848 w -(that) 1511 3848 w -(provides) 1745 3848 w -(the) 2204 3848 w -(standard) 2402 3848 w -(ANSI) 2872 3848 w -(C) 3141 3848 w -(preprocessor,) 3253 3848 w -(headers,) 3964 3848 w -(and) 4423 3848 w -(libraries) 4646 3848 w -(with) 720 3968 w -(POSIX) 973 3968 w -(extensions.) 1301 3968 w -10 /LucidaTypewriter f -(Pcc) 1940 3968 w -10 /LucidaSansUnicode00 f -(is) 2205 3968 w -(recommended) 2334 3968 w -(only) 3078 3968 w -(when) 3331 3968 w -(broad) 3637 3968 w -(external) 3969 3968 w -(portability) 4415 3968 w -(is) 4960 3968 w -(mandated.) 720 4088 w -(It) 1317 4088 w -(compiles) 1432 4088 w -(slower,) 1914 4088 w -(produces) 2309 4088 w -(slower) 2805 4088 w -(code) 3168 4088 w -(\(it) 3447 4088 w -(takes) 3594 4088 w -(extra) 3899 4088 w -(work) 4197 4088 w -(to) 4482 4088 w -(simulate) 4628 4088 w -(POSIX) 720 4208 w -(on) 1033 4208 w -(Plan) 1190 4208 w -(9\),) 1425 4208 w -(eliminates) 1587 4208 w -(those) 2118 4208 w -(parts) 2419 4208 w -(of) 2700 4208 w -(the) 2832 4208 w -(Plan) 3021 4208 w -(9) 3257 4208 w -(interface) 3355 4208 w -(not) 3814 4208 w -(related) 4009 4208 w -(to) 4381 4208 w -(POSIX,) 4514 4208 w -(and) 4860 4208 w -(illustrates) 720 4328 w -(the) 1236 4328 w -(clumsiness) 1430 4328 w -(of) 2004 4328 w -(an) 2141 4328 w -(environment) 2297 4328 w -(designed) 2947 4328 w -(by) 3427 4328 w -(committee.) 3580 4328 w -10 /LucidaTypewriter f -(Pcc) 4195 4328 w -10 /LucidaSansUnicode00 f -(is) 4449 4328 w -(described) 4567 4328 w -(in more detail in) 720 4448 w +(#include) 920 1286 w +() 1505 1286 w +(#include) 920 1396 w +() 1505 1396 w +(#include) 920 1506 w +() 1505 1506 w +(void) 920 1726 w +(main\(int) 920 1836 w +(argc,) 1505 1836 w +(char) 1895 1836 w +(*argv[]\)) 2220 1836 w +({) 920 1946 w +(printf\("%s:) 1440 2056 w +(hello) 2220 2056 w +(world;) 2610 2056 w +(argc) 3065 2056 w +(=) 3390 2056 w +(%d\\n",) 3520 2056 w +(argv[0],) 3975 2056 w +(argc\);) 4560 2056 w +(exits\(0\);) 1440 2166 w +(}) 920 2276 w +10 /LucidaSansUnicode00 f +(In) 720 2456 w +(practice,) 857 2456 w +(Standard) 1318 2456 w +(I/O) 1794 2456 w +(is) 2000 2456 w +(not) 2126 2456 w +(used) 2332 2456 w +(much) 2610 2456 w +(in) 2924 2456 w +(Plan) 3061 2456 w +(9.) 3308 2456 w +(I/O) 3481 2456 w +(libraries) 3687 2456 w +(are) 4127 2456 w +(discussed) 4325 2456 w +(in) 4848 2456 w +(a) 4985 2456 w +(later section of this document.) 720 2576 w +(There) 970 2732 w +(are) 1284 2732 w +(libraries) 1472 2732 w +(for) 1902 2732 w +(handling) 2077 2732 w +(regular) 2537 2732 w +(expressions,) 2919 2732 w +(raster) 3570 2732 w +(graphics,) 3888 2732 w +(windows,) 4371 2732 w +(and) 4860 2732 w +(so) 720 2852 w +(on,) 866 2852 w +(and) 1055 2852 w +(each) 1269 2852 w +(has) 1527 2852 w +(an) 1729 2852 w +(associated) 1880 2852 w +(include) 2423 2852 w +(file.) 2809 2852 w +(The) 3058 2852 w +(manual) 3273 2852 w +(for) 3663 2852 w +(each) 3836 2852 w +(library) 4094 2852 w +(states) 4438 2852 w +(which) 4759 2852 w +(include) 720 2972 w +(files) 1127 2972 w +(are) 1384 2972 w +(needed.) 1591 2972 w +(The) 2067 2972 w +(files) 2304 2972 w +(are) 2562 2972 w +(not) 2770 2972 w +(protected) 2986 2972 w +(against) 3507 2972 w +(multiple) 3914 2972 w +(inclusion) 4368 2972 w +(and) 4860 2972 w +(themselves) 720 3092 w +(contain) 1316 3092 w +(no) 1726 3092 w +(nested) 1902 3092 w +10 /LucidaTypewriter f +(#includes) 2280 3092 w +10 /LucidaSansUnicode00 f +(.) 2928 3092 w +(Instead) 3045 3092 w +(the) 3450 3092 w +(programmer) 3657 3092 w +(is) 4315 3092 w +(expected) 4447 3092 w +(to) 4942 3092 w +(sort) 720 3212 w +(out) 944 3212 w +(the) 1138 3212 w +(requirements) 1327 3212 w +(and) 2009 3212 w +(to) 2224 3212 w +10 /LucidaTypewriter f +(#include) 2357 3212 w +10 /LucidaSansUnicode00 f +(the) 2968 3212 w +(necessary) 3158 3212 w +(files) 3668 3212 w +(once) 3905 3212 w +(at) 4170 3212 w +(the) 4297 3212 w +(top) 4487 3212 w +(of) 4683 3212 w +(each) 4816 3212 w +(source) 720 3332 w +(file.) 1080 3332 w +(In) 1333 3332 w +(practice) 1462 3332 w +(this) 1883 3332 w +(is) 2100 3332 w +(trivial:) 2218 3332 w +(this) 2560 3332 w +(way) 2777 3332 w +(of) 2999 3332 w +(handling) 3135 3332 w +(include) 3597 3332 w +(files) 3987 3332 w +(is) 4227 3332 w +(so) 4345 3332 w +(straightfor\255) 4494 3332 w +(ward that it is rare for a source file to contain more than half a dozen) 720 3452 w +10 /LucidaTypewriter f +(#includes) 4124 3452 w +10 /LucidaSansUnicode00 f +(.) 4772 3452 w +(The) 970 3608 w +(compilers) 1214 3608 w +(do) 1751 3608 w +(their) 1938 3608 w +(own) 2226 3608 w +(register) 2489 3608 w +(allocation) 2925 3608 w +(so) 3457 3608 w +(the) 3632 3608 w +10 /LucidaTypewriter f +(register) 3850 3608 w +10 /LucidaSansUnicode00 f +(keyword) 4489 3608 w +(is) 4960 3608 w +(ignored.) 720 3728 w +(For different reasons,) 1190 3728 w +10 /LucidaTypewriter f +(volatile) 2269 3728 w +10 /LucidaSansUnicode00 f +(and) 2877 3728 w +10 /LucidaTypewriter f +(const) 3089 3728 w +10 /LucidaSansUnicode00 f +(are also ignored.) 3481 3728 w +(To) 970 3884 w +(make) 1141 3884 w +(it) 1450 3884 w +(easier) 1563 3884 w +(to) 1898 3884 w +(share) 2043 3884 w +(code) 2355 3884 w +(with) 2633 3884 w +(other) 2885 3884 w +(systems,) 3189 3884 w +(Plan) 3660 3884 w +(9) 3909 3884 w +(has) 4020 3884 w +(a) 4236 3884 w +(version) 4339 3884 w +(of) 4739 3884 w +(the) 4885 3884 w +(compiler,) 720 4004 w +10 /LucidaTypewriter f +(pcc) 1219 4004 w +10 /LucidaSansUnicode00 f +(,) 1435 4004 w +(that) 1511 4004 w +(provides) 1745 4004 w +(the) 2204 4004 w +(standard) 2402 4004 w +(ANSI) 2872 4004 w +(C) 3141 4004 w +(preprocessor,) 3253 4004 w +(headers,) 3964 4004 w +(and) 4423 4004 w +(libraries) 4646 4004 w +(with) 720 4124 w +(POSIX) 973 4124 w +(extensions.) 1301 4124 w +10 /LucidaTypewriter f +(Pcc) 1940 4124 w +10 /LucidaSansUnicode00 f +(is) 2205 4124 w +(recommended) 2334 4124 w +(only) 3078 4124 w +(when) 3331 4124 w +(broad) 3637 4124 w +(external) 3969 4124 w +(portability) 4415 4124 w +(is) 4960 4124 w +(mandated.) 720 4244 w +(It) 1317 4244 w +(compiles) 1432 4244 w +(slower,) 1914 4244 w +(produces) 2309 4244 w +(slower) 2805 4244 w +(code) 3168 4244 w +(\(it) 3447 4244 w +(takes) 3594 4244 w +(extra) 3899 4244 w +(work) 4197 4244 w +(to) 4482 4244 w +(simulate) 4628 4244 w +(POSIX) 720 4364 w +(on) 1033 4364 w +(Plan) 1190 4364 w +(9\),) 1425 4364 w +(eliminates) 1587 4364 w +(those) 2118 4364 w +(parts) 2419 4364 w +(of) 2700 4364 w +(the) 2832 4364 w +(Plan) 3021 4364 w +(9) 3257 4364 w +(interface) 3355 4364 w +(not) 3814 4364 w +(related) 4009 4364 w +(to) 4381 4364 w +(POSIX,) 4514 4364 w +(and) 4860 4364 w +(illustrates) 720 4484 w +(the) 1236 4484 w +(clumsiness) 1430 4484 w +(of) 2004 4484 w +(an) 2141 4484 w +(environment) 2297 4484 w +(designed) 2947 4484 w +(by) 3427 4484 w +(committee.) 3580 4484 w +10 /LucidaTypewriter f +(Pcc) 4195 4484 w +10 /LucidaSansUnicode00 f +(is) 4449 4484 w +(described) 4567 4484 w +(in more detail in) 720 4604 w 10 /LucidaSans-Italic f -(APE) 1550 4448 w +(APE) 1550 4604 w 10 /LucidaSansUnicode20 f -(\024) 1732 4448 w +(\024) 1732 4604 w 10 /LucidaSans-Italic f -(The ANSI/POSIX Environment,) 1832 4448 w -10 /LucidaSansUnicode00 f -(by Howard Trickey.) 3307 4448 w +(The ANSI/POSIX Environment,) 1832 4604 w +10 /LucidaSansUnicode00 f +(by Howard Trickey.) 3307 4604 w 10 /LucidaSans-Demi f -(Process) 720 4688 w -10 /LucidaSansUnicode00 f -(Each) 970 4844 w -(CPU) 1252 4844 w -(architecture) 1505 4844 w -(supported) 2143 4844 w -(by) 2700 4844 w -(Plan) 2875 4844 w -(9) 3136 4844 w -(is) 3259 4844 w -(identified) 3399 4844 w -(by) 3920 4844 w -(a) 4096 4844 w -(single,) 4212 4844 w -(arbitrary,) 4594 4844 w -(alphanumeric) 720 4964 w -(character:) 1413 4964 w -10 /LucidaTypewriter f -(k) 1929 4964 w -10 /LucidaSansUnicode00 f -(for) 2036 4964 w -(SPARC,) 2210 4964 w -10 /LucidaTypewriter f -(q) 2587 4964 w -10 /LucidaSansUnicode00 f -(for) 2693 4964 w -(Motorola) 2866 4964 w -(Power) 3331 4964 w -(PC) 3655 4964 w -(630) 3813 4964 w -(and) 4036 4964 w -(640,) 4250 4964 w -10 /LucidaTypewriter f -(v) 4505 4964 w -10 /LucidaSansUnicode00 f -(for) 4611 4964 w -(MIPS,) 4784 4964 w -10 /LucidaTypewriter f -(1) 720 5084 w -10 /LucidaSansUnicode00 f -(for) 831 5084 w -(Motorola) 1010 5084 w -(68000,) 1481 5084 w -10 /LucidaTypewriter f -(2) 1868 5084 w -10 /LucidaSansUnicode00 f -(for) 1980 5084 w -(Motorola) 2159 5084 w -(68020) 2630 5084 w -(and) 2985 5084 w -(68040,) 3205 5084 w -10 /LucidaTypewriter f -(5) 3592 5084 w -10 /LucidaSansUnicode00 f -(for) 3704 5084 w -(Acorn) 3883 5084 w -(ARM) 4207 5084 w -(7500,) 4465 5084 w -10 /LucidaTypewriter f -(6) 4789 5084 w -10 /LucidaSansUnicode00 f -(for) 4901 5084 w -(Intel) 720 5204 w -(960,) 969 5204 w -10 /LucidaTypewriter f -(7) 1226 5204 w -10 /LucidaSansUnicode00 f -(for) 1334 5204 w -(DEC) 1509 5204 w -(Alpha,) 1743 5204 w -10 /LucidaTypewriter f -(8) 2089 5204 w -10 /LucidaSansUnicode00 f -(for) 2197 5204 w -(Intel) 2372 5204 w -(386,) 2621 5204 w -(and) 2878 5204 w -10 /LucidaTypewriter f -(9) 3094 5204 w -10 /LucidaSansUnicode00 f -(for) 3202 5204 w -(AMD) 3377 5204 w -(29000.) 3643 5204 w -(The) 4057 5204 w -(character) 4273 5204 w -(labels) 4757 5204 w -(the) 720 5324 w -(support) 917 5324 w -(tools) 1338 5324 w -(and) 1620 5324 w -(files) 1843 5324 w -(for) 2088 5324 w -(that) 2270 5324 w -(architecture.) 2504 5324 w -(For) 3189 5324 w -(instance,) 3388 5324 w -(for) 3866 5324 w -(the) 4048 5324 w -(68020) 4246 5324 w -(the) 4604 5324 w -(com\255) 4802 5324 w -(piler) 720 5444 w -(is) 983 5444 w -10 /LucidaTypewriter f -(2c) 1108 5444 w -10 /LucidaSansUnicode00 f -(,) 1252 5444 w -(the) 1329 5444 w -(assembler) 1529 5444 w -(is) 2069 5444 w -10 /LucidaTypewriter f -(2a) 2194 5444 w -10 /LucidaSansUnicode00 f -(,) 2338 5444 w -(the) 2415 5444 w -(link) 2615 5444 w -(editor/loader) 2838 5444 w -(is) 3528 5444 w -10 /LucidaTypewriter f -(2l) 3653 5444 w -10 /LucidaSansUnicode00 f -(,) 3797 5444 w -(the) 3874 5444 w -(object) 4073 5444 w -(files) 4415 5444 w -(are) 4661 5444 w -(suf\255) 4857 5444 w -(fixed) 720 5564 w -10 /LucidaTypewriter f -(.2) 1002 5564 w -10 /LucidaSansUnicode00 f -(,) 1146 5564 w -(and) 1214 5564 w -(the) 1430 5564 w -(default) 1621 5564 w -(name) 1996 5564 w -(for) 2299 5564 w -(an) 2475 5564 w -(executable) 2629 5564 w -(file) 3192 5564 w -(is) 3380 5564 w -10 /LucidaTypewriter f -(2.out) 3497 5564 w -10 /LucidaSansUnicode00 f -(.) 3857 5564 w -(Before) 3958 5564 w -(we) 4304 5564 w -(can) 4474 5564 w -(use) 4679 5564 w -(the) 4885 5564 w -(compiler) 720 5684 w -(we) 1178 5684 w -(therefore) 1346 5684 w -(need) 1828 5684 w -(to) 2100 5684 w -(know) 2232 5684 w -(which) 2524 5684 w -(machine) 2839 5684 w -(we) 3281 5684 w -(are) 3448 5684 w -(compiling) 3634 5684 w -(for.) 4147 5684 w -(The) 4384 5684 w -(next) 4599 5684 w -(sec\255) 4849 5684 w -(tion) 720 5804 w -(explains) 944 5804 w -(how) 1385 5804 w -(this) 1621 5804 w -(decision) 1836 5804 w -(is) 2274 5804 w -(made;) 2390 5804 w -(for) 2725 5804 w -(the) 2900 5804 w -(moment) 3091 5804 w -(assume) 3529 5804 w -(we) 3933 5804 w -(are) 4102 5804 w -(building) 4290 5804 w -(68020) 4725 5804 w -(binaries) 720 5924 w -(and) 1157 5924 w -(make) 1388 5924 w -(the) 1701 5924 w -(mental) 1907 5924 w -(substitution) 2290 5924 w -(for) 2922 5924 w -10 /LucidaTypewriter f -(2) 3112 5924 w -10 /LucidaSansUnicode00 f -(appropriate) 3235 5924 w -(to) 3850 5924 w -(the) 3999 5924 w -(machine) 4205 5924 w -(you) 4663 5924 w -(are) 4888 5924 w -(actually using.) 720 6044 w -(To) 970 6200 w -(convert) 1146 6200 w -(source) 1558 6200 w -(to) 1932 6200 w -(an) 2082 6200 w -(executable) 2251 6200 w -(binary) 2829 6200 w -(is) 3183 6200 w -(a) 3315 6200 w -(two-step) 3422 6200 w -(process.) 3914 6200 w -(First) 4404 6200 w -(run) 4668 6200 w -(the) 4885 6200 w -(compiler,) 720 6320 w -10 /LucidaTypewriter f -(2c) 1222 6320 w -10 /LucidaSansUnicode00 f -(,) 1366 6320 w -(on) 1445 6320 w -(the) 1615 6320 w -(source,) 1817 6320 w -(say) 2218 6320 w -10 /LucidaTypewriter f -(file.c) 2423 6320 w -10 /LucidaSansUnicode00 f -(,) 2855 6320 w -(to) 2934 6320 w -(generate) 3079 6320 w -(an) 3551 6320 w -(object) 3714 6320 w -(file) 4058 6320 w -10 /LucidaTypewriter f -(file.2) 4255 6320 w -10 /LucidaSansUnicode00 f -(.) 4687 6320 w -(Then) 4797 6320 w -(run) 720 6440 w -(the) 935 6440 w -(loader,) 1140 6440 w -10 /LucidaTypewriter f -(2l) 1527 6440 w -10 /LucidaSansUnicode00 f -(,) 1671 6440 w -(to) 1753 6440 w -(generate) 1901 6440 w -(an) 2377 6440 w -(executable) 2545 6440 w -10 /LucidaTypewriter f -(2.out) 3122 6440 w -10 /LucidaSansUnicode00 f -(that) 3533 6440 w -(may) 3775 6440 w -(be) 4026 6440 w -(run) 4196 6440 w -(\(on) 4412 6440 w -(a) 4619 6440 w -(680X0) 4725 6440 w -(machine\):) 720 6560 w +(Process) 720 4844 w +10 /LucidaSansUnicode00 f +(Each) 970 5000 w +(CPU) 1252 5000 w +(architecture) 1505 5000 w +(supported) 2143 5000 w +(by) 2700 5000 w +(Plan) 2875 5000 w +(9) 3136 5000 w +(is) 3259 5000 w +(identified) 3399 5000 w +(by) 3920 5000 w +(a) 4096 5000 w +(single,) 4212 5000 w +(arbitrary,) 4594 5000 w +(alphanumeric) 720 5120 w +(character:) 1413 5120 w +10 /LucidaTypewriter f +(k) 1929 5120 w +10 /LucidaSansUnicode00 f +(for) 2036 5120 w +(SPARC,) 2210 5120 w +10 /LucidaTypewriter f +(q) 2587 5120 w +10 /LucidaSansUnicode00 f +(for) 2693 5120 w +(Motorola) 2866 5120 w +(Power) 3331 5120 w +(PC) 3655 5120 w +(630) 3813 5120 w +(and) 4036 5120 w +(640,) 4250 5120 w +10 /LucidaTypewriter f +(v) 4505 5120 w +10 /LucidaSansUnicode00 f +(for) 4611 5120 w +(MIPS,) 4784 5120 w +10 /LucidaTypewriter f +(0) 720 5240 w +10 /LucidaSansUnicode00 f +(for) 829 5240 w +(little-endian) 1005 5240 w +(MIPS,) 1644 5240 w +10 /LucidaTypewriter f +(1) 1938 5240 w +10 /LucidaSansUnicode00 f +(for) 2048 5240 w +(Motorola) 2225 5240 w +(68000,) 2694 5240 w +10 /LucidaTypewriter f +(2) 3079 5240 w +10 /LucidaSansUnicode00 f +(for) 3189 5240 w +(Motorola) 3366 5240 w +(68020) 3835 5240 w +(and) 4188 5240 w +(68040,) 4406 5240 w +10 /LucidaTypewriter f +(5) 4791 5240 w +10 /LucidaSansUnicode00 f +(for) 4901 5240 w +(Acorn) 720 5360 w +(ARM) 1057 5360 w +(7500,) 1328 5360 w +10 /LucidaTypewriter f +(6) 1665 5360 w +10 /LucidaSansUnicode00 f +(for) 1790 5360 w +(AMD) 1982 5360 w +(64,) 2265 5360 w +10 /LucidaTypewriter f +(7) 2476 5360 w +10 /LucidaSansUnicode00 f +(for) 2601 5360 w +(DEC) 2793 5360 w +(Alpha,) 3044 5360 w +10 /LucidaTypewriter f +(8) 3407 5360 w +10 /LucidaSansUnicode00 f +(for) 3532 5360 w +(Intel) 3724 5360 w +(386,) 3990 5360 w +(and) 4263 5360 w +10 /LucidaTypewriter f +(9) 4495 5360 w +10 /LucidaSansUnicode00 f +(for) 4619 5360 w +(AMD) 4810 5360 w +(29000.) 720 5480 w +(The) 1161 5480 w +(character) 1404 5480 w +(labels) 1915 5480 w +(the) 2260 5480 w +(support) 2477 5480 w +(tools) 2917 5480 w +(and) 3218 5480 w +(files) 3460 5480 w +(for) 3724 5480 w +(that) 3925 5480 w +(architecture.) 4179 5480 w +(For) 4884 5480 w +(instance,) 720 5600 w +(for) 1195 5600 w +(the) 1374 5600 w +(68020) 1569 5600 w +(the) 1924 5600 w +(compiler) 2119 5600 w +(is) 2582 5600 w +10 /LucidaTypewriter f +(2c) 2702 5600 w +10 /LucidaSansUnicode00 f +(,) 2846 5600 w +(the) 2918 5600 w +(assembler) 3113 5600 w +(is) 3648 5600 w +10 /LucidaTypewriter f +(2a) 3768 5600 w +10 /LucidaSansUnicode00 f +(,) 3912 5600 w +(the) 3984 5600 w +(link) 4178 5600 w +(editor/loader) 4395 5600 w +(is) 720 5720 w +10 /LucidaTypewriter f +(2l) 845 5720 w +10 /LucidaSansUnicode00 f +(,) 989 5720 w +(the) 1066 5720 w +(object) 1266 5720 w +(files) 1609 5720 w +(are) 1857 5720 w +(suffixed) 2055 5720 w +10 /LucidaTypewriter f +(.2) 2497 5720 w +10 /LucidaSansUnicode00 f +(,) 2641 5720 w +(and) 2719 5720 w +(the) 2945 5720 w +(default) 3146 5720 w +(name) 3531 5720 w +(for) 3843 5720 w +(an) 4028 5720 w +(executable) 4191 5720 w +(file) 4763 5720 w +(is) 4960 5720 w +10 /LucidaTypewriter f +(2.out) 720 5840 w +10 /LucidaSansUnicode00 f +(.) 1080 5840 w +(Before) 1183 5840 w +(we) 1531 5840 w +(can) 1703 5840 w +(use) 1910 5840 w +(the) 2118 5840 w +(compiler) 2312 5840 w +(we) 2774 5840 w +(therefore) 2946 5840 w +(need) 3432 5840 w +(to) 3708 5840 w +(know) 3845 5840 w +(which) 4142 5840 w +(machine) 4461 5840 w +(we) 4907 5840 w +(are) 720 5960 w +(compiling) 906 5960 w +(for.) 1419 5960 w +(The) 1656 5960 w +(next) 1871 5960 w +(section) 2121 5960 w +(explains) 2502 5960 w +(how) 2942 5960 w +(this) 3176 5960 w +(decision) 3389 5960 w +(is) 3825 5960 w +(made;) 3940 5960 w +(for) 4274 5960 w +(the) 4448 5960 w +(moment) 4638 5960 w +(assume) 720 6080 w +(we) 1129 6080 w +(are) 1303 6080 w +(building) 1496 6080 w +(68020) 1936 6080 w +(binaries) 2292 6080 w +(and) 2719 6080 w +(make) 2940 6080 w +(the) 3243 6080 w +(mental) 3439 6080 w +(substitution) 3812 6080 w +(for) 4433 6080 w +10 /LucidaTypewriter f +(2) 4612 6080 w +10 /LucidaSansUnicode00 f +(appro\255) 4724 6080 w +(priate to the machine you are actually using.) 720 6200 w +(To) 970 6356 w +(convert) 1146 6356 w +(source) 1558 6356 w +(to) 1932 6356 w +(an) 2082 6356 w +(executable) 2251 6356 w +(binary) 2829 6356 w +(is) 3183 6356 w +(a) 3315 6356 w +(two-step) 3422 6356 w +(process.) 3914 6356 w +(First) 4404 6356 w +(run) 4668 6356 w +(the) 4885 6356 w +(compiler,) 720 6476 w +10 /LucidaTypewriter f +(2c) 1222 6476 w +10 /LucidaSansUnicode00 f +(,) 1366 6476 w +(on) 1445 6476 w +(the) 1615 6476 w +(source,) 1817 6476 w +(say) 2218 6476 w +10 /LucidaTypewriter f +(file.c) 2423 6476 w +10 /LucidaSansUnicode00 f +(,) 2855 6476 w +(to) 2934 6476 w +(generate) 3079 6476 w +(an) 3551 6476 w +(object) 3714 6476 w +(file) 4058 6476 w +10 /LucidaTypewriter f +(file.2) 4255 6476 w +10 /LucidaSansUnicode00 f +(.) 4687 6476 w +(Then) 4797 6476 w +(run) 720 6596 w +(the) 935 6596 w +(loader,) 1140 6596 w +10 /LucidaTypewriter f +(2l) 1527 6596 w +10 /LucidaSansUnicode00 f +(,) 1671 6596 w +(to) 1753 6596 w +(generate) 1901 6596 w +(an) 2377 6596 w +(executable) 2545 6596 w +10 /LucidaTypewriter f +(2.out) 3122 6596 w +10 /LucidaSansUnicode00 f +(that) 3533 6596 w +(may) 3775 6596 w +(be) 4026 6596 w +(run) 4196 6596 w +(\(on) 4412 6596 w +(a) 4619 6596 w +(680X0) 4725 6596 w +(machine\):) 720 6716 w 9 /LucidaTypewriter f -(2c) 1008 6730 w -(file.c) 1203 6730 w -(2l) 1008 6840 w -(file.2) 1203 6840 w -(2.out) 1008 6950 w -10 /LucidaSansUnicode00 f -(The) 720 7130 w -(loader) 934 7130 w -(automatically) 1272 7130 w -(links) 1950 7130 w -(with) 2212 7130 w -(whatever) 2450 7130 w -(libraries) 2919 7130 w -(the) 3346 7130 w -(program) 3534 7130 w -(needs,) 3983 7130 w -(usually) 4337 7130 w -(includ\255) 4711 7130 w -(ing) 720 7250 w -(the) 908 7250 w -(standard) 1098 7250 w -(C) 1560 7250 w -(library) 1663 7250 w -(as) 2007 7250 w -(defined) 2147 7250 w -(by) 2547 7250 w -10 /LucidaTypewriter f -() 2696 7250 w -10 /LucidaSansUnicode00 f -(.) 3272 7250 w -(Of) 3370 7250 w -(course) 3519 7250 w -(the) 3875 7250 w -(compiler) 4064 7250 w -(and) 4521 7250 w -(loader) 4735 7250 w +(2c) 920 6886 w +(file.c) 1115 6886 w +(2l) 920 6996 w +(file.2) 1115 6996 w +(2.out) 920 7106 w +10 /LucidaSansUnicode00 f +(The) 720 7286 w +(loader) 970 7286 w +(automatically) 1344 7286 w +(links) 2058 7286 w +(with) 2356 7286 w +(whatever) 2630 7286 w +(libraries) 3135 7286 w +(the) 3599 7286 w +(program) 3824 7286 w +(needs,) 4310 7286 w +(usually) 4700 7286 w cleartomark showpage saveobj restore @@ -5242,641 +5231,646 @@ 4 pagesetup 10 /LucidaSansUnicode00 f (\255 4 \255) 2783 480 w -(have) 720 840 w -(lots) 989 840 w -(of) 1211 840 w -(options,) 1353 840 w -(both) 1793 840 w -(familiar) 2060 840 w -(and) 2472 840 w -(new;) 2697 840 w -(see) 2969 840 w -(the) 3177 840 w -(manual) 3377 840 w -(for) 3778 840 w -(details.) 3962 840 w -(The) 4391 840 w -(compiler) 4617 840 w -(does) 720 960 w -(not) 1007 960 w -(generate) 1223 960 w -(an) 1704 960 w -(executable) 1877 960 w -(automatically;) 2459 960 w -(the) 3192 960 w -(output) 3403 960 w -(of) 3781 960 w -(the) 3935 960 w -(compiler) 4145 960 w -(must) 4623 960 w -(be) 4921 960 w -(given to the loader.) 720 1080 w -(Since most compilation is done under the control of) 1731 1080 w -10 /LucidaTypewriter f -(mk) 4284 1080 w -10 /LucidaSansUnicode00 f -(\(see) 4460 1080 w -(below\),) 4689 1080 w -(this is rarely an inconvenience.) 720 1200 w -(The distribution of work between the compiler and) 970 1356 w -(loader) 3472 1356 w -(is) 3810 1356 w -(unusual.) 3923 1356 w -(The) 4403 1356 w -(compiler) 4617 1356 w -(integrates) 720 1476 w -(preprocessing,) 1241 1476 w -(parsing,) 1995 1476 w -(register) 2425 1476 w -(allocation,) 2833 1476 w -(code) 3369 1476 w -(generation) 3635 1476 w -(and) 4191 1476 w -(some) 4406 1476 w -(assem\255) 4701 1476 w -(bly.) 720 1596 w -(Combining) 965 1596 w -(these) 1532 1596 w -(tasks) 1831 1596 w -(in) 2120 1596 w -(a) 2248 1596 w -(single) 2340 1596 w -(program) 2666 1596 w -(is) 3119 1596 w -(part) 3237 1596 w -(of) 3471 1596 w -(the) 3607 1596 w -(reason) 3800 1596 w -(for) 4164 1596 w -(the) 4341 1596 w -(compiler) 4534 1596 w +(including) 720 840 w +(the) 1207 840 w +(standard) 1400 840 w +(C) 1865 840 w +(library) 1972 840 w +(as) 2320 840 w +(defined) 2464 840 w +(by) 2868 840 w +10 /LucidaTypewriter f +() 3020 840 w +10 /LucidaSansUnicode00 f +(.) 3596 840 w +(Of) 3697 840 w +(course) 3849 840 w +(the) 4208 840 w +(compiler) 4400 840 w +(and) 4860 840 w +(loader) 720 960 w +(have) 1058 960 w +(lots) 1316 960 w +(of) 1527 960 w +(options,) 1658 960 w +(both) 2087 960 w +(familiar) 2343 960 w +(and) 2745 960 w +(new;) 2959 960 w +(see) 3220 960 w +(the) 3417 960 w +(manual) 3606 960 w +(for) 3996 960 w +(details.) 4169 960 w +(The) 4587 960 w +(com\255) 4802 960 w +(piler) 720 1080 w +(does) 973 1080 w +(not) 1239 1080 w +(generate) 1434 1080 w +(an) 1894 1080 w +(executable) 2046 1080 w +(automatically;) 2607 1080 w +(the) 3319 1080 w +(output) 3509 1080 w +(of) 3866 1080 w +(the) 3998 1080 w +(compiler) 4187 1080 w +(must) 4644 1080 w +(be) 4921 1080 w +(given to the loader.) 720 1200 w +(Since most compilation is done under the control of) 1731 1200 w +10 /LucidaTypewriter f +(mk) 4284 1200 w +10 /LucidaSansUnicode00 f +(\(see) 4460 1200 w +(below\),) 4689 1200 w +(this is rarely an inconvenience.) 720 1320 w +(The distribution of work between the compiler and) 970 1476 w +(loader) 3472 1476 w +(is) 3810 1476 w +(unusual.) 3923 1476 w +(The) 4403 1476 w +(compiler) 4617 1476 w +(integrates) 720 1596 w +(preprocessing,) 1241 1596 w +(parsing,) 1995 1596 w +(register) 2425 1596 w +(allocation,) 2833 1596 w +(code) 3369 1596 w +(generation) 3635 1596 w +(and) 4191 1596 w +(some) 4406 1596 w +(assem\255) 4701 1596 w +(bly.) 720 1716 w +(Combining) 965 1716 w +(these) 1532 1716 w +(tasks) 1831 1716 w +(in) 2120 1716 w +(a) 2248 1716 w +(single) 2340 1716 w +(program) 2666 1716 w +(is) 3119 1716 w +(part) 3237 1716 w +(of) 3471 1716 w +(the) 3607 1716 w +(reason) 3800 1716 w +(for) 4164 1716 w +(the) 4341 1716 w +(compiler) 4534 1716 w 10 /LucidaSansUnicode20 f -(\031) 4957 1596 w -10 /LucidaSansUnicode00 f -(s) 4989 1596 w -(efficiency.) 720 1716 w -(The) 1278 1716 w -(loader) 1493 1716 w -(does) 1832 1716 w -(instruction) 2097 1716 w -(selection,) 2653 1716 w -(branch) 3151 1716 w -(folding,) 3518 1716 w -(instruction) 3926 1716 w -(scheduling,) 4481 1716 w -(and) 720 1836 w -(writes) 938 1836 w -(the) 1267 1836 w -(final) 1460 1836 w -(executable.) 1710 1836 w -(There) 2338 1836 w -(is) 2654 1836 w -(no) 2772 1836 w -(separate) 2933 1836 w -(C) 3385 1836 w -(preprocessor) 3492 1836 w -(and) 4166 1836 w -(no) 4384 1836 w -(assembler) 4545 1836 w -(in) 720 1956 w -(the) 857 1956 w -(usual) 1057 1956 w -(pipeline.) 1361 1956 w -(Instead) 1857 1956 w -(the) 2255 1956 w -(intermediate) 2455 1956 w -(object) 3114 1956 w -(file) 3457 1956 w -(\(here) 3653 1956 w -(a) 3946 1956 w -10 /LucidaTypewriter f -(.2) 4046 1956 w -10 /LucidaSansUnicode00 f -(file\)) 4235 1956 w -(is) 4464 1956 w -(a) 4589 1956 w -(type) 4689 1956 w -(of) 4942 1956 w -(binary) 720 2076 w -(assembly) 1064 2076 w -(language.) 1556 2076 w -(The) 2105 2076 w -(instructions) 2329 2076 w -(in) 2945 2076 w -(the) 3079 2076 w -(intermediate) 3277 2076 w -(format) 3934 2076 w -(are) 4301 2076 w -(not) 4496 2076 w -(exactly) 4699 2076 w -(those) 720 2196 w -(in) 1031 2196 w -(the) 1166 2196 w -(machine.) 1365 2196 w -(For) 1881 2196 w -(example,) 2081 2196 w -(on) 2570 2196 w -(the) 2737 2196 w -(68020) 2936 2196 w -(the) 3295 2196 w -(object) 3494 2196 w -(file) 3836 2196 w -(may) 4031 2196 w -(specify) 4275 2196 w -(a) 4658 2196 w -(MOVE) 4757 2196 w -(instruction but) 720 2316 w -(the) 1469 2316 w -(loader) 1657 2316 w -(will) 1995 2316 w -(decide) 2192 2316 w -(just) 2543 2316 w -(which) 2756 2316 w -(variant) 3070 2316 w -(of) 3434 2316 w -(the) 3565 2316 w -(MOVE) 3753 2316 w -(instruction) 4069 2316 w +(\031) 4957 1716 w +10 /LucidaSansUnicode00 f +(s) 4989 1716 w +(efficiency.) 720 1836 w +(The) 1278 1836 w +(loader) 1493 1836 w +(does) 1832 1836 w +(instruction) 2097 1836 w +(selection,) 2653 1836 w +(branch) 3151 1836 w +(folding,) 3518 1836 w +(instruction) 3926 1836 w +(scheduling,) 4481 1836 w +(and) 720 1956 w +(writes) 938 1956 w +(the) 1267 1956 w +(final) 1460 1956 w +(executable.) 1710 1956 w +(There) 2338 1956 w +(is) 2654 1956 w +(no) 2772 1956 w +(separate) 2933 1956 w +(C) 3385 1956 w +(preprocessor) 3492 1956 w +(and) 4166 1956 w +(no) 4384 1956 w +(assembler) 4545 1956 w +(in) 720 2076 w +(the) 857 2076 w +(usual) 1057 2076 w +(pipeline.) 1361 2076 w +(Instead) 1857 2076 w +(the) 2255 2076 w +(intermediate) 2455 2076 w +(object) 3114 2076 w +(file) 3457 2076 w +(\(here) 3653 2076 w +(a) 3946 2076 w +10 /LucidaTypewriter f +(.2) 4046 2076 w +10 /LucidaSansUnicode00 f +(file\)) 4235 2076 w +(is) 4464 2076 w +(a) 4589 2076 w +(type) 4689 2076 w +(of) 4942 2076 w +(binary) 720 2196 w +(assembly) 1064 2196 w +(language.) 1556 2196 w +(The) 2105 2196 w +(instructions) 2329 2196 w +(in) 2945 2196 w +(the) 3079 2196 w +(intermediate) 3277 2196 w +(format) 3934 2196 w +(are) 4301 2196 w +(not) 4496 2196 w +(exactly) 4699 2196 w +(those) 720 2316 w +(in) 1031 2316 w +(the) 1166 2316 w +(machine.) 1365 2316 w +(For) 1881 2316 w +(example,) 2081 2316 w +(on) 2570 2316 w +(the) 2737 2316 w +(68020) 2936 2316 w +(the) 3295 2316 w +(object) 3494 2316 w +(file) 3836 2316 w +(may) 4031 2316 w +(specify) 4275 2316 w +(a) 4658 2316 w +(MOVE) 4757 2316 w +(instruction but) 720 2436 w +(the) 1469 2436 w +(loader) 1657 2436 w +(will) 1995 2436 w +(decide) 2192 2436 w +(just) 2543 2436 w +(which) 2756 2436 w +(variant) 3070 2436 w +(of) 3434 2436 w +(the) 3565 2436 w +(MOVE) 3753 2436 w +(instruction) 4069 2436 w 10 /LucidaSansUnicode20 f -(\024) 4624 2316 w -10 /LucidaSansUnicode00 f -(MOVE) 4757 2316 w -(immediate, MOVE quick, MOVE address, etc. ) 720 2436 w +(\024) 4624 2436 w +10 /LucidaSansUnicode00 f +(MOVE) 4757 2436 w +(immediate, MOVE quick, MOVE address, etc. ) 720 2556 w 10 /LucidaSansUnicode20 f -(\024) 2904 2436 w -10 /LucidaSansUnicode00 f -(is most efficient.) 3036 2436 w -(The) 970 2592 w -(assembler,) 1190 2592 w -10 /LucidaTypewriter f -(2a) 1756 2592 w -10 /LucidaSansUnicode00 f -(,) 1900 2592 w -(is) 1971 2592 w -(just) 2090 2592 w -(a) 2309 2592 w -(translator) 2403 2592 w -(between) 2911 2592 w -(the) 3357 2592 w -(textual) 3551 2592 w -(and) 3927 2592 w -(binary) 4147 2592 w -(representa\255) 4489 2592 w -(tions) 720 2712 w -(of) 994 2712 w -(the) 1126 2712 w -(object) 1315 2712 w -(file) 1647 2712 w -(format.) 1832 2712 w -(It) 2254 2712 w -(is) 2354 2712 w -(not) 2468 2712 w -(an) 2662 2712 w -(assembler) 2812 2712 w -(in) 3340 2712 w -(the) 3464 2712 w -(traditional) 3652 2712 w -(sense.) 4183 2712 w -(It) 4556 2712 w -(has) 4655 2712 w -(lim\255) 4856 2712 w -(ited) 720 2832 w -(macro) 938 2832 w -(capabilities) 1272 2832 w -(\(the) 1852 2832 w -(same) 2073 2832 w -(as) 2361 2832 w -(the) 2500 2832 w -(integral) 2688 2832 w -(C) 3093 2832 w -(preprocessor) 3196 2832 w -(in) 3866 2832 w -(the) 3991 2832 w -(compiler\),) 4180 2832 w -(clumsy) 4702 2832 w -(syntax,) 720 2952 w -(and) 1109 2952 w -(minimal) 1328 2952 w -(error) 1757 2952 w -(checking.) 2036 2952 w -(For) 2570 2952 w -(instance,) 2765 2952 w -(the) 3239 2952 w -(assembler) 3433 2952 w -(will) 3966 2952 w -(accept) 4168 2952 w -(an) 4519 2952 w -(instruc\255) 4674 2952 w -(tion \(such as) 720 3072 w -(memory-to-memory) 1371 3072 w -(MOVE) 2410 3072 w -(on) 2726 3072 w -(the) 2882 3072 w -(MIPS\)) 3070 3072 w -(that) 3360 3072 w -(the) 3584 3072 w -(machine) 3772 3072 w -(does) 4213 3072 w -(not) 4477 3072 w -(actually) 4670 3072 w -(support;) 720 3192 w -(only) 1166 3192 w -(when) 1406 3192 w -(the) 1699 3192 w -(output) 1890 3192 w -(of) 2248 3192 w -(the) 2382 3192 w -(assembler) 2573 3192 w -(is) 3104 3192 w -(passed) 3220 3192 w -(to) 3594 3192 w -(the) 3727 3192 w -(loader) 3917 3192 w -(will) 4257 3192 w -(the) 4456 3192 w -(error) 4646 3192 w -(be) 4921 3192 w -(discovered.) 720 3312 w -(The) 1367 3312 w -(assembler) 1608 3312 w -(is) 2163 3312 w -(intended) 2303 3312 w -(only) 2791 3312 w -(for) 3055 3312 w -(writing) 3254 3312 w -(things) 3652 3312 w -(that) 4016 3312 w -(need) 4268 3312 w -(access) 4566 3312 w -(to) 4942 3312 w -(instructions) 720 3432 w -(invisible) 1333 3432 w -(from) 1773 3432 w -(C,) 2045 3432 w -(such) 2186 3432 w -(as) 2452 3432 w -(the) 2598 3432 w -(machine-dependent) 2793 3432 w -(part) 3817 3432 w -(of) 4053 3432 w -(an) 4191 3432 w -(operating) 4348 3432 w -(sys\255) 4853 3432 w -(tem; very little code in Plan 9 is in assembly language.) 720 3552 w -(The) 970 3708 w -(compilers) 1191 3708 w -(take) 1705 3708 w -(an) 1952 3708 w -(option) 2110 3708 w -10 /LucidaTypewriter f -(-S) 2464 3708 w -10 /LucidaSansUnicode00 f -(that) 2649 3708 w -(causes) 2881 3708 w -(them) 3248 3708 w -(to) 3537 3708 w -(print) 3676 3708 w -(on) 3949 3708 w -(their) 4113 3708 w -(standard) 4379 3708 w -(out\255) 4847 3708 w -(put) 720 3828 w -(the) 929 3828 w -(generated) 1131 3828 w -(code) 1666 3828 w -(in) 1943 3828 w -(a) 2080 3828 w -(format) 2181 3828 w -(acceptable) 2551 3828 w -(as) 3113 3828 w -(input) 3265 3828 w -(to) 3564 3828 w -(the) 3708 3828 w -(assemblers.) 3909 3828 w -(This) 4565 3828 w -(is) 4816 3828 w -(of) 4942 3828 w -(course) 720 3948 w -(merely) 1079 3948 w -(a) 1443 3948 w -(formatting) 1535 3948 w -(of) 2086 3948 w -(the) 2221 3948 w -(data) 2413 3948 w -(in) 2660 3948 w -(the) 2788 3948 w -(object) 2980 3948 w -(file;) 3315 3948 w -(therefore) 3535 3948 w -(the) 4019 3948 w -(assembler) 4211 3948 w -(is) 4743 3948 w -(just) 4860 3948 w -(an) 720 4068 w -(ASCII-to-binary) 883 4068 w -(converter) 1695 4068 w -(for) 2198 4068 w -(this) 2383 4068 w -(format.) 2608 4068 w -(Other) 3042 4068 w -(than) 3362 4068 w -(the) 3623 4068 w -(specific) 3823 4068 w -(instructions,) 4235 4068 w -(the) 4885 4068 w -(input) 720 4188 w -(to) 1010 4188 w -(the) 1145 4188 w -(assemblers) 1337 4188 w -(is) 1920 4188 w -(largely) 2037 4188 w -(architecture-independent;) 2398 4188 w -(see) 3712 4188 w +(\024) 2904 2556 w +10 /LucidaSansUnicode00 f +(is most efficient.) 3036 2556 w +(The) 970 2712 w +(assembler,) 1190 2712 w +10 /LucidaTypewriter f +(2a) 1756 2712 w +10 /LucidaSansUnicode00 f +(,) 1900 2712 w +(is) 1971 2712 w +(just) 2090 2712 w +(a) 2309 2712 w +(translator) 2403 2712 w +(between) 2911 2712 w +(the) 3357 2712 w +(textual) 3551 2712 w +(and) 3927 2712 w +(binary) 4147 2712 w +(representa\255) 4489 2712 w +(tions) 720 2832 w +(of) 994 2832 w +(the) 1126 2832 w +(object) 1315 2832 w +(file) 1647 2832 w +(format.) 1832 2832 w +(It) 2254 2832 w +(is) 2354 2832 w +(not) 2468 2832 w +(an) 2662 2832 w +(assembler) 2812 2832 w +(in) 3340 2832 w +(the) 3464 2832 w +(traditional) 3652 2832 w +(sense.) 4183 2832 w +(It) 4556 2832 w +(has) 4655 2832 w +(lim\255) 4856 2832 w +(ited) 720 2952 w +(macro) 938 2952 w +(capabilities) 1272 2952 w +(\(the) 1852 2952 w +(same) 2073 2952 w +(as) 2361 2952 w +(the) 2500 2952 w +(integral) 2688 2952 w +(C) 3093 2952 w +(preprocessor) 3196 2952 w +(in) 3866 2952 w +(the) 3991 2952 w +(compiler\),) 4180 2952 w +(clumsy) 4702 2952 w +(syntax,) 720 3072 w +(and) 1109 3072 w +(minimal) 1328 3072 w +(error) 1757 3072 w +(checking.) 2036 3072 w +(For) 2570 3072 w +(instance,) 2765 3072 w +(the) 3239 3072 w +(assembler) 3433 3072 w +(will) 3966 3072 w +(accept) 4168 3072 w +(an) 4519 3072 w +(instruc\255) 4674 3072 w +(tion \(such as) 720 3192 w +(memory-to-memory) 1371 3192 w +(MOVE) 2410 3192 w +(on) 2726 3192 w +(the) 2882 3192 w +(MIPS\)) 3070 3192 w +(that) 3360 3192 w +(the) 3584 3192 w +(machine) 3772 3192 w +(does) 4213 3192 w +(not) 4477 3192 w +(actually) 4670 3192 w +(support;) 720 3312 w +(only) 1166 3312 w +(when) 1406 3312 w +(the) 1699 3312 w +(output) 1890 3312 w +(of) 2248 3312 w +(the) 2382 3312 w +(assembler) 2573 3312 w +(is) 3104 3312 w +(passed) 3220 3312 w +(to) 3594 3312 w +(the) 3727 3312 w +(loader) 3917 3312 w +(will) 4257 3312 w +(the) 4456 3312 w +(error) 4646 3312 w +(be) 4921 3312 w +(discovered.) 720 3432 w +(The) 1367 3432 w +(assembler) 1608 3432 w +(is) 2163 3432 w +(intended) 2303 3432 w +(only) 2791 3432 w +(for) 3055 3432 w +(writing) 3254 3432 w +(things) 3652 3432 w +(that) 4016 3432 w +(need) 4268 3432 w +(access) 4566 3432 w +(to) 4942 3432 w +(instructions) 720 3552 w +(invisible) 1333 3552 w +(from) 1773 3552 w +(C,) 2045 3552 w +(such) 2186 3552 w +(as) 2452 3552 w +(the) 2598 3552 w +(machine-dependent) 2793 3552 w +(part) 3817 3552 w +(of) 4053 3552 w +(an) 4191 3552 w +(operating) 4348 3552 w +(sys\255) 4853 3552 w +(tem; very little code in Plan 9 is in assembly language.) 720 3672 w +(The) 970 3828 w +(compilers) 1191 3828 w +(take) 1705 3828 w +(an) 1952 3828 w +(option) 2110 3828 w +10 /LucidaTypewriter f +(-S) 2464 3828 w +10 /LucidaSansUnicode00 f +(that) 2649 3828 w +(causes) 2881 3828 w +(them) 3248 3828 w +(to) 3537 3828 w +(print) 3676 3828 w +(on) 3949 3828 w +(their) 4113 3828 w +(standard) 4379 3828 w +(out\255) 4847 3828 w +(put) 720 3948 w +(the) 929 3948 w +(generated) 1131 3948 w +(code) 1666 3948 w +(in) 1943 3948 w +(a) 2080 3948 w +(format) 2181 3948 w +(acceptable) 2551 3948 w +(as) 3113 3948 w +(input) 3265 3948 w +(to) 3564 3948 w +(the) 3708 3948 w +(assemblers.) 3909 3948 w +(This) 4565 3948 w +(is) 4816 3948 w +(of) 4942 3948 w +(course) 720 4068 w +(merely) 1079 4068 w +(a) 1443 4068 w +(formatting) 1535 4068 w +(of) 2086 4068 w +(the) 2221 4068 w +(data) 2413 4068 w +(in) 2660 4068 w +(the) 2788 4068 w +(object) 2980 4068 w +(file;) 3315 4068 w +(therefore) 3535 4068 w +(the) 4019 4068 w +(assembler) 4211 4068 w +(is) 4743 4068 w +(just) 4860 4068 w +(an) 720 4188 w +(ASCII-to-binary) 883 4188 w +(converter) 1695 4188 w +(for) 2198 4188 w +(this) 2383 4188 w +(format.) 2608 4188 w +(Other) 3042 4188 w +(than) 3362 4188 w +(the) 3623 4188 w +(specific) 3823 4188 w +(instructions,) 4235 4188 w +(the) 4885 4188 w +(input) 720 4308 w +(to) 1010 4308 w +(the) 1145 4308 w +(assemblers) 1337 4308 w +(is) 1920 4308 w +(largely) 2037 4308 w +(architecture-independent;) 2398 4308 w +(see) 3712 4308 w 10 /LucidaSansUnicode20 f -(\030\030) 3912 4188 w -10 /LucidaSansUnicode00 f -(A) 3976 4188 w -(Manual) 4082 4188 w -(for) 4469 4188 w -(the) 4646 4188 w -(Plan) 4839 4188 w -(9 Assembler) 720 4308 w +(\030\030) 3912 4308 w +10 /LucidaSansUnicode00 f +(A) 3976 4308 w +(Manual) 4082 4308 w +(for) 4469 4308 w +(the) 4646 4308 w +(Plan) 4839 4308 w +(9 Assembler) 720 4428 w 10 /LucidaSansUnicode20 f -(\031\031) 1324 4308 w -10 /LucidaSansUnicode00 f -(, by Rob Pike, for more information.) 1388 4308 w -(The) 970 4464 w -(loader) 1192 4464 w -(is) 1538 4464 w -(an) 1659 4464 w -(integral) 1818 4464 w -(part) 2231 4464 w -(of) 2469 4464 w -(the) 2609 4464 w -(compilation) 2806 4464 w -(process.) 3418 4464 w -(Each) 3898 4464 w -(library) 4162 4464 w -(header) 4514 4464 w -(file) 4889 4464 w -(contains) 720 4584 w -(a) 1171 4584 w -10 /LucidaTypewriter f -(#pragma) 1269 4584 w -10 /LucidaSansUnicode00 f -(that) 1816 4584 w -(tells) 2049 4584 w -(the) 2293 4584 w -(loader) 2490 4584 w -(the) 2837 4584 w -(name) 3034 4584 w -(of) 3342 4584 w -(the) 3482 4584 w -(associated) 3679 4584 w -(archive;) 4230 4584 w -(it) 4650 4584 w -(is) 4758 4584 w -(not) 4880 4584 w -(necessary) 720 4704 w -(to) 1237 4704 w -(tell) 1377 4704 w -(the) 1570 4704 w -(loader) 1767 4704 w -(which) 2114 4704 w -(libraries) 2437 4704 w -(a) 2873 4704 w -(program) 2970 4704 w -(uses.) 3428 4704 w -(The) 3754 4704 w -(C) 3978 4704 w -(run-time) 4090 4704 w -(startup) 4571 4704 w -(is) 4960 4704 w -(found,) 720 4824 w -(by) 1072 4824 w -(default,) 1222 4824 w -(in) 1628 4824 w -(the) 1754 4824 w -(C) 1944 4824 w -(library.) 2048 4824 w -(The) 2457 4824 w -(loader) 2673 4824 w -(starts) 3013 4824 w -(with) 3319 4824 w -(an) 3558 4824 w -(undefined) 3709 4824 w -(symbol,) 4233 4824 w -10 /LucidaTypewriter f -(_main) 4648 4824 w -10 /LucidaSansUnicode00 f -(,) 5008 4824 w -(that) 720 4944 w -(is) 957 4944 w -(resolved) 1083 4944 w -(by) 1538 4944 w -(pulling) 1699 4944 w -(in) 2081 4944 w -(the) 2218 4944 w -(run-time) 2419 4944 w -(startup) 2903 4944 w -(code) 3295 4944 w -(from) 3572 4944 w -(the) 3851 4944 w -(library.) 4053 4944 w -(\(The) 4474 4944 w -(loader) 4735 4944 w -(undefines) 720 5064 w -10 /LucidaTypewriter f -(_mainp) 1238 5064 w -10 /LucidaSansUnicode00 f -(when) 1709 5064 w -(profiling) 2005 5064 w -(is) 2457 5064 w -(enabled,) 2576 5064 w -(to) 3031 5064 w -(force) 3168 5064 w -(loading) 3453 5064 w -(of) 3853 5064 w -(the) 3990 5064 w -(profiling) 4184 5064 w -(start-up) 4636 5064 w -(instead.\)) 720 5184 w -(Unlike) 970 5340 w -(its) 1311 5340 w -(counterpart) 1467 5340 w -(on) 2072 5340 w -(other) 2234 5340 w -(systems,) 2530 5340 w -(the) 2992 5340 w -(Plan) 3186 5340 w -(9) 3426 5340 w -(loader) 3528 5340 w -(rearranges) 3872 5340 w -(data) 4431 5340 w -(to) 4680 5340 w -(opti\255) 4817 5340 w -(mize) 720 5460 w -(access.) 988 5460 w -(This) 1400 5460 w -(means) 1638 5460 w -(the) 1988 5460 w -(order) 2176 5460 w -(of) 2471 5460 w -(variables) 2602 5460 w -(in) 3066 5460 w -(the) 3190 5460 w -(loaded) 3378 5460 w -(program) 3738 5460 w -(is) 4187 5460 w -(unrelated to its) 4300 5460 w -(order) 720 5580 w -(in) 1016 5580 w -(the) 1141 5580 w -(source.) 1330 5580 w -(Most) 1750 5580 w -(programs) 2019 5580 w -(don) 2520 5580 w +(\031\031) 1324 4428 w +10 /LucidaSansUnicode00 f +(, by Rob Pike, for more information.) 1388 4428 w +(The) 970 4584 w +(loader) 1192 4584 w +(is) 1538 4584 w +(an) 1659 4584 w +(integral) 1818 4584 w +(part) 2231 4584 w +(of) 2469 4584 w +(the) 2609 4584 w +(compilation) 2806 4584 w +(process.) 3418 4584 w +(Each) 3898 4584 w +(library) 4162 4584 w +(header) 4514 4584 w +(file) 4889 4584 w +(contains) 720 4704 w +(a) 1171 4704 w +10 /LucidaTypewriter f +(#pragma) 1269 4704 w +10 /LucidaSansUnicode00 f +(that) 1816 4704 w +(tells) 2049 4704 w +(the) 2293 4704 w +(loader) 2490 4704 w +(the) 2837 4704 w +(name) 3034 4704 w +(of) 3342 4704 w +(the) 3482 4704 w +(associated) 3679 4704 w +(archive;) 4230 4704 w +(it) 4650 4704 w +(is) 4758 4704 w +(not) 4880 4704 w +(necessary) 720 4824 w +(to) 1237 4824 w +(tell) 1377 4824 w +(the) 1570 4824 w +(loader) 1767 4824 w +(which) 2114 4824 w +(libraries) 2437 4824 w +(a) 2873 4824 w +(program) 2970 4824 w +(uses.) 3428 4824 w +(The) 3754 4824 w +(C) 3978 4824 w +(run-time) 4090 4824 w +(startup) 4571 4824 w +(is) 4960 4824 w +(found,) 720 4944 w +(by) 1072 4944 w +(default,) 1222 4944 w +(in) 1628 4944 w +(the) 1754 4944 w +(C) 1944 4944 w +(library.) 2048 4944 w +(The) 2457 4944 w +(loader) 2673 4944 w +(starts) 3013 4944 w +(with) 3319 4944 w +(an) 3558 4944 w +(undefined) 3709 4944 w +(symbol,) 4233 4944 w +10 /LucidaTypewriter f +(_main) 4648 4944 w +10 /LucidaSansUnicode00 f +(,) 5008 4944 w +(that) 720 5064 w +(is) 957 5064 w +(resolved) 1083 5064 w +(by) 1538 5064 w +(pulling) 1699 5064 w +(in) 2081 5064 w +(the) 2218 5064 w +(run-time) 2419 5064 w +(startup) 2903 5064 w +(code) 3295 5064 w +(from) 3572 5064 w +(the) 3851 5064 w +(library.) 4053 5064 w +(\(The) 4474 5064 w +(loader) 4735 5064 w +(undefines) 720 5184 w +10 /LucidaTypewriter f +(_mainp) 1238 5184 w +10 /LucidaSansUnicode00 f +(when) 1709 5184 w +(profiling) 2005 5184 w +(is) 2457 5184 w +(enabled,) 2576 5184 w +(to) 3031 5184 w +(force) 3168 5184 w +(loading) 3453 5184 w +(of) 3853 5184 w +(the) 3990 5184 w +(profiling) 4184 5184 w +(start-up) 4636 5184 w +(instead.\)) 720 5304 w +(Unlike) 970 5460 w +(its) 1311 5460 w +(counterpart) 1467 5460 w +(on) 2072 5460 w +(other) 2234 5460 w +(systems,) 2530 5460 w +(the) 2992 5460 w +(Plan) 3186 5460 w +(9) 3426 5460 w +(loader) 3528 5460 w +(rearranges) 3872 5460 w +(data) 4431 5460 w +(to) 4680 5460 w +(opti\255) 4817 5460 w +(mize) 720 5580 w +(access.) 988 5580 w +(This) 1400 5580 w +(means) 1638 5580 w +(the) 1988 5580 w +(order) 2176 5580 w +(of) 2471 5580 w +(variables) 2602 5580 w +(in) 3066 5580 w +(the) 3190 5580 w +(loaded) 3378 5580 w +(program) 3738 5580 w +(is) 4187 5580 w +(unrelated to its) 4300 5580 w +(order) 720 5700 w +(in) 1016 5700 w +(the) 1141 5700 w +(source.) 1330 5700 w +(Most) 1750 5700 w +(programs) 2019 5700 w +(don) 2520 5700 w 10 /LucidaSansUnicode20 f -(\031) 2706 5580 w -10 /LucidaSansUnicode00 f -(t) 2738 5580 w -(care,) 2809 5580 w -(but) 3078 5580 w -(some) 3274 5580 w -(assume) 3570 5580 w -(that,) 3973 5580 w -(for) 4231 5580 w -(example,) 4405 5580 w -(the) 4885 5580 w -(variables declared by) 720 5700 w +(\031) 2706 5700 w +10 /LucidaSansUnicode00 f +(t) 2738 5700 w +(care,) 2809 5700 w +(but) 3078 5700 w +(some) 3274 5700 w +(assume) 3570 5700 w +(that,) 3973 5700 w +(for) 4231 5700 w +(example,) 4405 5700 w +(the) 4885 5700 w +(variables declared by) 720 5820 w 9 /LucidaTypewriter f -(int) 1008 5870 w -(a;) 1268 5870 w -(int) 1008 5980 w -(b;) 1268 5980 w -10 /LucidaSansUnicode00 f -(will appear at adjacent addresses in memory.) 720 6160 w -(On Plan 9, they won) 2980 6160 w +(int) 920 5990 w +(a;) 1180 5990 w +(int) 920 6100 w +(b;) 1180 6100 w +10 /LucidaSansUnicode00 f +(will appear at adjacent addresses in memory.) 720 6280 w +(On Plan 9, they won) 2980 6280 w 10 /LucidaSansUnicode20 f -(\031) 3951 6160 w -10 /LucidaSansUnicode00 f -(t.) 3983 6160 w +(\031) 3951 6280 w +10 /LucidaSansUnicode00 f +(t.) 3983 6280 w 10 /LucidaSans-Demi f -(Heterogeneity) 720 6400 w -10 /LucidaSansUnicode00 f -(When) 970 6556 w -(the) 1288 6556 w -(system) 1495 6556 w -(starts) 1887 6556 w -(or) 2212 6556 w -(a) 2367 6556 w -(user) 2475 6556 w -(logs) 2738 6556 w -(in) 2994 6556 w -(the) 3138 6556 w -(environment) 3346 6556 w -(is) 4010 6556 w -(configured) 4143 6556 w -(so) 4720 6556 w -(the) 4885 6556 w -(appropriate) 720 6676 w -(binaries) 1327 6676 w -(are) 1755 6676 w -(available) 1949 6676 w -(in) 2414 6676 w -10 /LucidaTypewriter f -(/bin) 2547 6676 w -10 /LucidaSansUnicode00 f -(.) 2835 6676 w -(The) 2941 6676 w -(configuration) 3164 6676 w -(process) 3855 6676 w -(is) 4271 6676 w -(controlled) 4393 6676 w -(by) 4925 6676 w -(an) 720 6796 w -(environment) 902 6796 w -(variable,) 1578 6796 w -10 /LucidaTypewriter f -($cputype) 2055 6796 w -10 /LucidaSansUnicode00 f -(,) 2631 6796 w -(with) 2728 6796 w -(value) 2998 6796 w -(such) 3317 6796 w -(as) 3608 6796 w -10 /LucidaTypewriter f -(mips) 3780 6796 w -10 /LucidaSansUnicode00 f -(,) 4068 6796 w -10 /LucidaTypewriter f -(68020) 4166 6796 w -10 /LucidaSansUnicode00 f -(,) 4526 6796 w -10 /LucidaTypewriter f -(386) 4624 6796 w -10 /LucidaSansUnicode00 f -(,) 4840 6796 w -(or) 4938 6796 w -10 /LucidaTypewriter f -(sparc) 720 6916 w -10 /LucidaSansUnicode00 f -(.) 1080 6916 w -(For) 1200 6916 w -(each) 1412 6916 w -(architecture) 1692 6916 w -(there) 2325 6916 w -(is) 2632 6916 w -(a) 2767 6916 w -(directory) 2877 6916 w -(in) 3363 6916 w -(the) 3509 6916 w -(root,) 3719 6916 w -(with) 4006 6916 w -(the) 4266 6916 w -(appropriate) 4476 6916 w -(name,) 720 7036 w -(that) 1064 7036 w -(holds) 1301 7036 w -(the) 1613 7036 w -(binary) 1814 7036 w -(and) 2162 7036 w -(library) 2388 7036 w -(files) 2745 7036 w -(for) 2994 7036 w -(that) 3180 7036 w -(architecture.) 3418 7036 w -(Thus) 4107 7036 w -10 /LucidaTypewriter f -(/mips/lib) 4392 7036 w -10 /LucidaSansUnicode00 f -(contains) 720 7156 w -(the) 1177 7156 w -(object) 1381 7156 w -(code) 1728 7156 w -(libraries) 2008 7156 w -(for) 2451 7156 w -(MIPS) 2639 7156 w -(programs,) 2912 7156 w -10 /LucidaTypewriter f -(/mips/include) 3460 7156 w -10 /LucidaSansUnicode00 f -(holds) 4444 7156 w -(MIPS-) 4758 7156 w -(specific) 720 7276 w -(include) 1152 7276 w -(files,) 1569 7276 w -(and) 1868 7276 w -10 /LucidaTypewriter f -(/mips/bin) 2113 7276 w -10 /LucidaSansUnicode00 f -(has) 2826 7276 w -(the) 3059 7276 w -(MIPS) 3279 7276 w -(binaries.) 3568 7276 w -(These) 4083 7276 w -(binaries) 4436 7276 w -(are) 4888 7276 w +(Heterogeneity) 720 6520 w +10 /LucidaSansUnicode00 f +(When) 970 6676 w +(the) 1288 6676 w +(system) 1495 6676 w +(starts) 1887 6676 w +(or) 2212 6676 w +(a) 2367 6676 w +(user) 2475 6676 w +(logs) 2738 6676 w +(in) 2994 6676 w +(the) 3138 6676 w +(environment) 3346 6676 w +(is) 4010 6676 w +(configured) 4143 6676 w +(so) 4720 6676 w +(the) 4885 6676 w +(appropriate) 720 6796 w +(binaries) 1327 6796 w +(are) 1755 6796 w +(available) 1949 6796 w +(in) 2414 6796 w +10 /LucidaTypewriter f +(/bin) 2547 6796 w +10 /LucidaSansUnicode00 f +(.) 2835 6796 w +(The) 2941 6796 w +(configuration) 3164 6796 w +(process) 3855 6796 w +(is) 4271 6796 w +(controlled) 4393 6796 w +(by) 4925 6796 w +(an) 720 6916 w +(environment) 902 6916 w +(variable,) 1578 6916 w +10 /LucidaTypewriter f +($cputype) 2055 6916 w +10 /LucidaSansUnicode00 f +(,) 2631 6916 w +(with) 2728 6916 w +(value) 2998 6916 w +(such) 3317 6916 w +(as) 3608 6916 w +10 /LucidaTypewriter f +(mips) 3780 6916 w +10 /LucidaSansUnicode00 f +(,) 4068 6916 w +10 /LucidaTypewriter f +(68020) 4166 6916 w +10 /LucidaSansUnicode00 f +(,) 4526 6916 w +10 /LucidaTypewriter f +(386) 4624 6916 w +10 /LucidaSansUnicode00 f +(,) 4840 6916 w +(or) 4938 6916 w +10 /LucidaTypewriter f +(sparc) 720 7036 w +10 /LucidaSansUnicode00 f +(.) 1080 7036 w +(For) 1200 7036 w +(each) 1412 7036 w +(architecture) 1692 7036 w +(there) 2325 7036 w +(is) 2632 7036 w +(a) 2767 7036 w +(directory) 2877 7036 w +(in) 3363 7036 w +(the) 3509 7036 w +(root,) 3719 7036 w +(with) 4006 7036 w +(the) 4266 7036 w +(appropriate) 4476 7036 w +(name,) 720 7156 w +(that) 1064 7156 w +(holds) 1301 7156 w +(the) 1613 7156 w +(binary) 1814 7156 w +(and) 2162 7156 w +(library) 2388 7156 w +(files) 2745 7156 w +(for) 2994 7156 w +(that) 3180 7156 w +(architecture.) 3418 7156 w +(Thus) 4107 7156 w +10 /LucidaTypewriter f +(/mips/lib) 4392 7156 w +10 /LucidaSansUnicode00 f +(contains) 720 7276 w +(the) 1177 7276 w +(object) 1381 7276 w +(code) 1728 7276 w +(libraries) 2008 7276 w +(for) 2451 7276 w +(MIPS) 2639 7276 w +(programs,) 2912 7276 w +10 /LucidaTypewriter f +(/mips/include) 3460 7276 w +10 /LucidaSansUnicode00 f +(holds) 4444 7276 w +(MIPS-) 4758 7276 w cleartomark showpage saveobj restore @@ -5887,480 +5881,494 @@ 5 pagesetup 10 /LucidaSansUnicode00 f (\255 5 \255) 2783 480 w -(attached) 720 840 w -(to) 1170 840 w -10 /LucidaTypewriter f -(/bin) 1302 840 w -10 /LucidaSansUnicode00 f -(at) 1623 840 w -(boot) 1748 840 w -(time) 2003 840 w -(by) 2251 840 w -(binding) 2399 840 w -10 /LucidaTypewriter f -(/$cputype/bin) 2802 840 w -10 /LucidaSansUnicode00 f -(to) 3771 840 w -10 /LucidaTypewriter f -(/bin) 3902 840 w -10 /LucidaSansUnicode00 f -(,) 4190 840 w -(so) 4255 840 w -10 /LucidaTypewriter f -(/bin) 4400 840 w -10 /LucidaSansUnicode00 f -(always) 4721 840 w -(contains the correct files.) 720 960 w -(The) 970 1116 w -(MIPS) 1198 1116 w -(compiler,) 1469 1116 w -10 /LucidaTypewriter f -(vc) 1971 1116 w -10 /LucidaSansUnicode00 f -(,) 2115 1116 w -(by) 2195 1116 w -(definition) 2358 1116 w -(produces) 2871 1116 w -(object) 3367 1116 w -(files) 3713 1116 w -(for) 3963 1116 w -(the) 4150 1116 w -(MIPS) 4353 1116 w -(architec\255) 4625 1116 w -(ture,) 720 1236 w -(regardless) 996 1236 w -(of) 1549 1236 w -(the) 1695 1236 w -(architecture) 1898 1236 w -(of) 2524 1236 w -(the) 2670 1236 w -(machine) 2873 1236 w -(on) 3329 1236 w -(which) 3500 1236 w -(the) 3829 1236 w -(compiler) 4031 1236 w -(is) 4501 1236 w -(running.) 4628 1236 w -(There) 720 1356 w -(is) 1097 1356 w -(a) 1277 1356 w -(version) 1432 1356 w -(of) 1884 1356 w -10 /LucidaTypewriter f -(vc) 2082 1356 w -10 /LucidaSansUnicode00 f -(compiled) 2326 1356 w -(for) 2871 1356 w -(each) 3110 1356 w -(architecture:) 3434 1356 w -10 /LucidaTypewriter f -(/mips/bin/vc) 4144 1356 w -10 /LucidaSansUnicode00 f -(,) 5008 1356 w -10 /LucidaTypewriter f -(/68020/bin/vc) 720 1476 w -10 /LucidaSansUnicode00 f -(,) 1656 1476 w -10 /LucidaTypewriter f -(/sparc/bin/vc) 1747 1476 w -10 /LucidaSansUnicode00 f -(,) 2683 1476 w -(and) 2774 1476 w -(so) 3013 1476 w -(on,) 3183 1476 w -(each) 3396 1476 w -(capable) 3678 1476 w -(of) 4108 1476 w -(producing) 4264 1476 w -(MIPS) 4816 1476 w -(object) 720 1596 w -(files) 1076 1596 w -(regardless) 1336 1596 w -(of) 1899 1596 w -(the) 2055 1596 w -(native) 2268 1596 w -(instruction) 2617 1596 w -(set.) 3197 1596 w -(If) 3463 1596 w -(one) 3587 1596 w -(is) 3824 1596 w -(running) 3963 1596 w -(on) 4402 1596 w -(a) 4584 1596 w -(SPARC,) 4698 1596 w -10 /LucidaTypewriter f -(/sparc/bin/vc) 720 1716 w -10 /LucidaSansUnicode00 f -(will) 1705 1716 w -(compile) 1918 1716 w -(programs) 2349 1716 w -(for) 2865 1716 w -(the) 3053 1716 w -(MIPS;) 3257 1716 w -(if) 3562 1716 w -(one) 3677 1716 w -(is) 3905 1716 w -(running) 4033 1716 w -(on) 4461 1716 w -(machine) 4632 1716 w -10 /LucidaTypewriter f -($cputype) 720 1836 w -10 /LucidaSansUnicode00 f -(,) 1296 1836 w -10 /LucidaTypewriter f -(/$cputype/bin/vc) 1360 1836 w -10 /LucidaSansUnicode00 f -(will compile programs for the MIPS.) 2544 1836 w -(Because) 970 1992 w -(of) 1408 1992 w -(the) 1556 1992 w -(bindings) 1761 1992 w -(that) 2232 1992 w -(assemble) 2473 1992 w -10 /LucidaTypewriter f -(/bin) 2977 1992 w -10 /LucidaSansUnicode00 f -(,) 3265 1992 w -(the) 3347 1992 w -(shell) 3552 1992 w -(always) 3829 1992 w -(looks) 4198 1992 w -(for) 4508 1992 w -(a) 4697 1992 w -(com\255) 4802 1992 w -(mand,) 720 2112 w -(say) 1071 2112 w -10 /LucidaTypewriter f -(date) 1275 2112 w -10 /LucidaSansUnicode00 f -(,) 1563 2112 w -(in) 1641 2112 w -10 /LucidaTypewriter f -(/bin) 1778 2112 w -10 /LucidaSansUnicode00 f -(and) 2112 2112 w -(automatically) 2338 2112 w -(finds) 3029 2112 w -(the) 3316 2112 w -(file) 3516 2112 w -10 /LucidaTypewriter f -(/$cputype/bin/date) 3712 2112 w -10 /LucidaSansUnicode00 f -(.) 5008 2112 w -(Therefore) 720 2232 w -(the) 1238 2232 w -(MIPS) 1438 2232 w -(compiler) 1707 2232 w -(is) 2175 2232 w -(known) 2300 2232 w -(as) 2665 2232 w -(just) 2816 2232 w -10 /LucidaTypewriter f -(vc) 3041 2232 w -10 /LucidaSansUnicode00 f -(;) 3185 2232 w -(the) 3262 2232 w -(shell) 3463 2232 w -(will) 3736 2232 w -(invoke) 3946 2232 w -10 /LucidaTypewriter f -(/bin/vc) 4310 2232 w -10 /LucidaSansUnicode00 f -(and) 4860 2232 w -(that) 720 2352 w -(is) 955 2352 w -(guaranteed) 1079 2352 w -(to) 1672 2352 w -(be) 1814 2352 w -(the) 1977 2352 w -(version) 2176 2352 w -(of) 2572 2352 w -(the) 2714 2352 w -(MIPS) 2912 2352 w -(compiler) 3179 2352 w -(appropriate) 3645 2352 w -(for) 4252 2352 w -(the) 4434 2352 w -(machine) 4632 2352 w -(running) 720 2472 w -(the) 1171 2472 w -(command.) 1397 2472 w -(Regardless) 2010 2472 w -(of) 2608 2472 w -(the) 2777 2472 w -(architecture) 3003 2472 w -(of) 3652 2472 w -(the) 3822 2472 w -(compiling) 4049 2472 w -(machine,) 4600 2472 w -10 /LucidaTypewriter f -(/bin/vc) 720 2592 w -10 /LucidaSansUnicode00 f -(is) 1256 2592 w +(specific) 720 840 w +(include) 1152 840 w +(files,) 1569 840 w +(and) 1868 840 w +10 /LucidaTypewriter f +(/mips/bin) 2113 840 w +10 /LucidaSansUnicode00 f +(has) 2826 840 w +(the) 3059 840 w +(MIPS) 3279 840 w +(binaries.) 3568 840 w +(These) 4083 840 w +(binaries) 4436 840 w +(are) 4888 840 w +(attached) 720 960 w +(to) 1170 960 w +10 /LucidaTypewriter f +(/bin) 1302 960 w +10 /LucidaSansUnicode00 f +(at) 1623 960 w +(boot) 1748 960 w +(time) 2003 960 w +(by) 2251 960 w +(binding) 2399 960 w +10 /LucidaTypewriter f +(/$cputype/bin) 2802 960 w +10 /LucidaSansUnicode00 f +(to) 3771 960 w +10 /LucidaTypewriter f +(/bin) 3902 960 w +10 /LucidaSansUnicode00 f +(,) 4190 960 w +(so) 4255 960 w +10 /LucidaTypewriter f +(/bin) 4400 960 w +10 /LucidaSansUnicode00 f +(always) 4721 960 w +(contains the correct files.) 720 1080 w +(The) 970 1236 w +(MIPS) 1198 1236 w +(compiler,) 1469 1236 w +10 /LucidaTypewriter f +(vc) 1971 1236 w +10 /LucidaSansUnicode00 f +(,) 2115 1236 w +(by) 2195 1236 w +(definition) 2358 1236 w +(produces) 2871 1236 w +(object) 3367 1236 w +(files) 3713 1236 w +(for) 3963 1236 w +(the) 4150 1236 w +(MIPS) 4353 1236 w +(architec\255) 4625 1236 w +(ture,) 720 1356 w +(regardless) 996 1356 w +(of) 1549 1356 w +(the) 1695 1356 w +(architecture) 1898 1356 w +(of) 2524 1356 w +(the) 2670 1356 w +(machine) 2873 1356 w +(on) 3329 1356 w +(which) 3500 1356 w +(the) 3829 1356 w +(compiler) 4031 1356 w +(is) 4501 1356 w +(running.) 4628 1356 w +(There) 720 1476 w +(is) 1097 1476 w +(a) 1277 1476 w +(version) 1432 1476 w +(of) 1884 1476 w +10 /LucidaTypewriter f +(vc) 2082 1476 w +10 /LucidaSansUnicode00 f +(compiled) 2326 1476 w +(for) 2871 1476 w +(each) 3110 1476 w +(architecture:) 3434 1476 w +10 /LucidaTypewriter f +(/mips/bin/vc) 4144 1476 w +10 /LucidaSansUnicode00 f +(,) 5008 1476 w +10 /LucidaTypewriter f +(/68020/bin/vc) 720 1596 w +10 /LucidaSansUnicode00 f +(,) 1656 1596 w +10 /LucidaTypewriter f +(/sparc/bin/vc) 1747 1596 w +10 /LucidaSansUnicode00 f +(,) 2683 1596 w +(and) 2774 1596 w +(so) 3013 1596 w +(on,) 3183 1596 w +(each) 3396 1596 w +(capable) 3678 1596 w +(of) 4108 1596 w +(producing) 4264 1596 w +(MIPS) 4816 1596 w +(object) 720 1716 w +(files) 1076 1716 w +(regardless) 1336 1716 w +(of) 1899 1716 w +(the) 2055 1716 w +(native) 2268 1716 w +(instruction) 2617 1716 w +(set.) 3197 1716 w +(If) 3463 1716 w +(one) 3587 1716 w +(is) 3824 1716 w +(running) 3963 1716 w +(on) 4402 1716 w +(a) 4584 1716 w +(SPARC,) 4698 1716 w +10 /LucidaTypewriter f +(/sparc/bin/vc) 720 1836 w +10 /LucidaSansUnicode00 f +(will) 1705 1836 w +(compile) 1918 1836 w +(programs) 2349 1836 w +(for) 2865 1836 w +(the) 3053 1836 w +(MIPS;) 3257 1836 w +(if) 3562 1836 w +(one) 3677 1836 w +(is) 3905 1836 w +(running) 4033 1836 w +(on) 4461 1836 w +(machine) 4632 1836 w +10 /LucidaTypewriter f +($cputype) 720 1956 w +10 /LucidaSansUnicode00 f +(,) 1296 1956 w +10 /LucidaTypewriter f +(/$cputype/bin/vc) 1360 1956 w +10 /LucidaSansUnicode00 f +(will compile programs for the MIPS.) 2544 1956 w +(Because) 970 2112 w +(of) 1408 2112 w +(the) 1556 2112 w +(bindings) 1761 2112 w +(that) 2232 2112 w +(assemble) 2473 2112 w +10 /LucidaTypewriter f +(/bin) 2977 2112 w +10 /LucidaSansUnicode00 f +(,) 3265 2112 w +(the) 3347 2112 w +(shell) 3552 2112 w +(always) 3829 2112 w +(looks) 4198 2112 w +(for) 4508 2112 w +(a) 4697 2112 w +(com\255) 4802 2112 w +(mand,) 720 2232 w +(say) 1071 2232 w +10 /LucidaTypewriter f +(date) 1275 2232 w +10 /LucidaSansUnicode00 f +(,) 1563 2232 w +(in) 1641 2232 w +10 /LucidaTypewriter f +(/bin) 1778 2232 w +10 /LucidaSansUnicode00 f +(and) 2112 2232 w +(automatically) 2338 2232 w +(finds) 3029 2232 w +(the) 3316 2232 w +(file) 3516 2232 w +10 /LucidaTypewriter f +(/$cputype/bin/date) 3712 2232 w +10 /LucidaSansUnicode00 f +(.) 5008 2232 w +(Therefore) 720 2352 w +(the) 1238 2352 w +(MIPS) 1438 2352 w +(compiler) 1707 2352 w +(is) 2175 2352 w +(known) 2300 2352 w +(as) 2665 2352 w +(just) 2816 2352 w +10 /LucidaTypewriter f +(vc) 3041 2352 w +10 /LucidaSansUnicode00 f +(;) 3185 2352 w +(the) 3262 2352 w +(shell) 3463 2352 w +(will) 3736 2352 w +(invoke) 3946 2352 w +10 /LucidaTypewriter f +(/bin/vc) 4310 2352 w +10 /LucidaSansUnicode00 f +(and) 4860 2352 w +(that) 720 2472 w +(is) 955 2472 w +(guaranteed) 1079 2472 w +(to) 1672 2472 w +(be) 1814 2472 w +(the) 1977 2472 w +(version) 2176 2472 w +(of) 2572 2472 w +(the) 2714 2472 w +(MIPS) 2912 2472 w +(compiler) 3179 2472 w +(appropriate) 3645 2472 w +(for) 4252 2472 w +(the) 4434 2472 w +(machine) 4632 2472 w +(running) 720 2592 w +(the) 1171 2592 w +(command.) 1397 2592 w +(Regardless) 2010 2592 w +(of) 2608 2592 w +(the) 2777 2592 w +(architecture) 3003 2592 w +(of) 3652 2592 w +(the) 3822 2592 w +(compiling) 4049 2592 w +(machine,) 4600 2592 w +10 /LucidaTypewriter f +(/bin/vc) 720 2712 w +10 /LucidaSansUnicode00 f +(is) 1256 2712 w 10 /LucidaSans-Italic f -(always) 1368 2592 w -10 /LucidaSansUnicode00 f -(the MIPS compiler.) 1733 2592 w -(Also,) 970 2748 w -(the) 1253 2748 w -(output) 1449 2748 w -(of) 1812 2748 w -10 /LucidaTypewriter f -(vc) 1951 2748 w -10 /LucidaSansUnicode00 f -(and) 2136 2748 w -10 /LucidaTypewriter f -(vl) 2357 2748 w -10 /LucidaSansUnicode00 f -(is) 2542 2748 w -(completely) 2663 2748 w -(independent) 3231 2748 w -(of) 3881 2748 w -(the) 4020 2748 w -(machine) 4217 2748 w -(type) 4667 2748 w -(on) 4917 2748 w -(which) 720 2868 w -(they) 1045 2868 w -(are) 1296 2868 w -(executed:) 1492 2868 w -10 /LucidaTypewriter f -(.v) 2010 2868 w -10 /LucidaSansUnicode00 f -(files) 2198 2868 w -(compiled) 2444 2868 w -(\(with) 2933 2868 w -10 /LucidaTypewriter f -(vc) 3215 2868 w -10 /LucidaSansUnicode00 f -(\)) 3359 2868 w -(on) 3436 2868 w -(a) 3603 2868 w -(SPARC) 3702 2868 w -(may) 4056 2868 w -(be) 4300 2868 w -(linked) 4462 2868 w -(\(with) 4802 2868 w -10 /LucidaTypewriter f -(vl) 720 2988 w -10 /LucidaSansUnicode00 f -(\)) 864 2988 w -(on) 934 2988 w -(a) 1094 2988 w -(386.) 1186 2988 w -(\(The) 1476 2988 w -(resulting) 1727 2988 w -10 /LucidaTypewriter f -(v.out) 2193 2988 w -10 /LucidaSansUnicode00 f -(will) 2590 2988 w -(run,) 2791 2988 w -(of) 3025 2988 w -(course,) 3160 2988 w -(only) 3551 2988 w -(on) 3792 2988 w -(a) 3952 2988 w -(MIPS.\)) 4045 2988 w -(Similarly,) 4404 2988 w -(the) 4885 2988 w -(MIPS) 720 3108 w -(libraries) 981 3108 w -(in) 1412 3108 w -10 /LucidaTypewriter f -(/mips/lib) 1540 3108 w -10 /LucidaSansUnicode00 f -(are) 2225 3108 w -(suitable) 2414 3108 w -(for) 2833 3108 w -(loading) 3009 3108 w -(with) 3407 3108 w -10 /LucidaTypewriter f -(vl) 3649 3108 w -10 /LucidaSansUnicode00 f -(on) 3830 3108 w -(any) 3990 3108 w -(machine;) 4196 3108 w -(there) 4672 3108 w -(is) 4960 3108 w -(only) 720 3228 w -(one) 965 3228 w -(set) 1185 3228 w -(of) 1370 3228 w -(MIPS) 1509 3228 w -(libraries,) 1774 3228 w -(not) 2241 3228 w -(one) 2442 3228 w -(set) 2662 3228 w -(for) 2848 3228 w -(each) 3029 3228 w -(architecture) 3295 3228 w -(that) 3915 3228 w -(supports) 4148 3228 w -(the) 4619 3228 w -(MIPS) 4816 3228 w -(compiler.) 720 3348 w +(always) 1368 2712 w +10 /LucidaSansUnicode00 f +(the MIPS compiler.) 1733 2712 w +(Also,) 970 2868 w +(the) 1253 2868 w +(output) 1449 2868 w +(of) 1812 2868 w +10 /LucidaTypewriter f +(vc) 1951 2868 w +10 /LucidaSansUnicode00 f +(and) 2136 2868 w +10 /LucidaTypewriter f +(vl) 2357 2868 w +10 /LucidaSansUnicode00 f +(is) 2542 2868 w +(completely) 2663 2868 w +(independent) 3231 2868 w +(of) 3881 2868 w +(the) 4020 2868 w +(machine) 4217 2868 w +(type) 4667 2868 w +(on) 4917 2868 w +(which) 720 2988 w +(they) 1045 2988 w +(are) 1296 2988 w +(executed:) 1492 2988 w +10 /LucidaTypewriter f +(.v) 2010 2988 w +10 /LucidaSansUnicode00 f +(files) 2198 2988 w +(compiled) 2444 2988 w +(\(with) 2933 2988 w +10 /LucidaTypewriter f +(vc) 3215 2988 w +10 /LucidaSansUnicode00 f +(\)) 3359 2988 w +(on) 3436 2988 w +(a) 3603 2988 w +(SPARC) 3702 2988 w +(may) 4056 2988 w +(be) 4300 2988 w +(linked) 4462 2988 w +(\(with) 4802 2988 w +10 /LucidaTypewriter f +(vl) 720 3108 w +10 /LucidaSansUnicode00 f +(\)) 864 3108 w +(on) 934 3108 w +(a) 1094 3108 w +(386.) 1186 3108 w +(\(The) 1476 3108 w +(resulting) 1727 3108 w +10 /LucidaTypewriter f +(v.out) 2193 3108 w +10 /LucidaSansUnicode00 f +(will) 2590 3108 w +(run,) 2791 3108 w +(of) 3025 3108 w +(course,) 3160 3108 w +(only) 3551 3108 w +(on) 3792 3108 w +(a) 3952 3108 w +(MIPS.\)) 4045 3108 w +(Similarly,) 4404 3108 w +(the) 4885 3108 w +(MIPS) 720 3228 w +(libraries) 981 3228 w +(in) 1412 3228 w +10 /LucidaTypewriter f +(/mips/lib) 1540 3228 w +10 /LucidaSansUnicode00 f +(are) 2225 3228 w +(suitable) 2414 3228 w +(for) 2833 3228 w +(loading) 3009 3228 w +(with) 3407 3228 w +10 /LucidaTypewriter f +(vl) 3649 3228 w +10 /LucidaSansUnicode00 f +(on) 3830 3228 w +(any) 3990 3228 w +(machine;) 4196 3228 w +(there) 4672 3228 w +(is) 4960 3228 w +(only) 720 3348 w +(one) 965 3348 w +(set) 1185 3348 w +(of) 1370 3348 w +(MIPS) 1509 3348 w +(libraries,) 1774 3348 w +(not) 2241 3348 w +(one) 2442 3348 w +(set) 2662 3348 w +(for) 2848 3348 w +(each) 3029 3348 w +(architecture) 3295 3348 w +(that) 3915 3348 w +(supports) 4148 3348 w +(the) 4619 3348 w +(MIPS) 4816 3348 w +(compiler.) 720 3468 w 10 /LucidaSans-Demi f -(Heterogeneity and) 720 3588 w -10 /LucidaTypewriter f -(mk) 1703 3588 w -10 /LucidaSansUnicode00 f -(Most) 970 3744 w -(software) 1258 3744 w -(on) 1726 3744 w -(Plan) 1902 3744 w -(9) 2156 3744 w -(is) 2272 3744 w -(compiled) 2405 3744 w -(under) 2903 3744 w -(the) 3240 3744 w -(control) 3448 3744 w -(of) 3843 3744 w -10 /LucidaTypewriter f -(mk) 3994 3744 w -10 /LucidaSansUnicode00 f -(,) 4138 3744 w -(a) 4223 3744 w -(descendant) 4332 3744 w -(of) 4942 3744 w -10 /LucidaTypewriter f -(make) 720 3864 w -10 /LucidaSansUnicode00 f -(that) 1048 3864 w -(is) 1279 3864 w -(documented) 1399 3864 w -(in) 2043 3864 w -(the) 2174 3864 w -(Programmer) 2369 3864 w +(Heterogeneity and) 720 3708 w +10 /LucidaTypewriter f +(mk) 1703 3708 w +10 /LucidaSansUnicode00 f +(Most) 970 3864 w +(software) 1258 3864 w +(on) 1726 3864 w +(Plan) 1902 3864 w +(9) 2156 3864 w +(is) 2272 3864 w +(compiled) 2405 3864 w +(under) 2903 3864 w +(the) 3240 3864 w +(control) 3448 3864 w +(of) 3843 3864 w +10 /LucidaTypewriter f +(mk) 3994 3864 w +10 /LucidaSansUnicode00 f +(,) 4138 3864 w +(a) 4223 3864 w +(descendant) 4332 3864 w +(of) 4942 3864 w +10 /LucidaTypewriter f +(make) 720 3984 w +10 /LucidaSansUnicode00 f +(that) 1048 3984 w +(is) 1279 3984 w +(documented) 1399 3984 w +(in) 2043 3984 w +(the) 2174 3984 w +(Programmer) 2369 3984 w 10 /LucidaSansUnicode20 f -(\031) 2967 3864 w -10 /LucidaSansUnicode00 f -(s) 2999 3864 w -(Manual.) 3090 3864 w -(A) 3542 3864 w -(convention) 3650 3864 w -(used) 4222 3864 w -(throughout) 4493 3864 w -(the) 720 3984 w -10 /LucidaTypewriter f -(mkfiles) 911 3984 w -10 /LucidaSansUnicode00 f -(makes) 1451 3984 w -(it) 1800 3984 w -(easy) 1903 3984 w -(to) 2154 3984 w -(compile) 2289 3984 w -(the) 2708 3984 w -(source) 2900 3984 w -(into) 3259 3984 w -(binary) 3485 3984 w -(suitable) 3824 3984 w -(for) 4243 3984 w -(any) 4419 3984 w -(architec\255) 4625 3984 w -(ture.) 720 4104 w -(The) 970 4260 w -(variable) 1187 4260 w -10 /LucidaTypewriter f -($cputype) 1603 4260 w -10 /LucidaSansUnicode00 f -(is) 2215 4260 w -(advisory:) 2331 4260 w -(it) 2803 4260 w -(reports) 2905 4260 w -(the) 3291 4260 w -(architecture) 3482 4260 w -(of) 4096 4260 w -(the) 4230 4260 w -(current) 4421 4260 w -(envi\255) 4808 4260 w -(ronment,) 720 4380 w -(and) 1211 4380 w -(should) 1438 4380 w -(not) 1813 4380 w -(be) 2020 4380 w -(modified.) 2186 4380 w -(A) 2728 4380 w -(second) 2844 4380 w -(variable,) 3235 4380 w -10 /LucidaTypewriter f -($objtype) 3694 4380 w -10 /LucidaSansUnicode00 f -(,) 4270 4380 w -(is) 4348 4380 w -(used) 4474 4380 w -(to) 4752 4380 w -(set) 4896 4380 w -(which) 720 4500 w -(architecture) 1049 4500 w -(is) 1675 4500 w -(being) 1803 4500 w +(\031) 2967 3984 w +10 /LucidaSansUnicode00 f +(s) 2999 3984 w +(Manual.) 3090 3984 w +(A) 3542 3984 w +(convention) 3650 3984 w +(used) 4222 3984 w +(throughout) 4493 3984 w +(the) 720 4104 w +10 /LucidaTypewriter f +(mkfiles) 911 4104 w +10 /LucidaSansUnicode00 f +(makes) 1451 4104 w +(it) 1800 4104 w +(easy) 1903 4104 w +(to) 2154 4104 w +(compile) 2289 4104 w +(the) 2708 4104 w +(source) 2900 4104 w +(into) 3259 4104 w +(binary) 3485 4104 w +(suitable) 3824 4104 w +(for) 4243 4104 w +(any) 4419 4104 w +(architec\255) 4625 4104 w +(ture.) 720 4224 w +(The) 970 4380 w +(variable) 1187 4380 w +10 /LucidaTypewriter f +($cputype) 1603 4380 w +10 /LucidaSansUnicode00 f +(is) 2215 4380 w +(advisory:) 2331 4380 w +(it) 2803 4380 w +(reports) 2905 4380 w +(the) 3291 4380 w +(architecture) 3482 4380 w +(of) 4096 4380 w +(the) 4230 4380 w +(current) 4421 4380 w +(envi\255) 4808 4380 w +(ronment,) 720 4500 w +(and) 1211 4500 w +(should) 1438 4500 w +(not) 1813 4500 w +(be) 2020 4500 w +(modified.) 2186 4500 w +(A) 2728 4500 w +(second) 2844 4500 w +(variable,) 3235 4500 w +10 /LucidaTypewriter f +($objtype) 3694 4500 w +10 /LucidaSansUnicode00 f +(,) 4270 4500 w +(is) 4348 4500 w +(used) 4474 4500 w +(to) 4752 4500 w +(set) 4896 4500 w +(which) 720 4620 w +(architecture) 1049 4620 w +(is) 1675 4620 w +(being) 1803 4620 w 10 /LucidaSans-Italic f -(compiled) 2123 4500 w -10 /LucidaSansUnicode00 f -(for.) 2604 4500 w -(The) 2855 4500 w -(value) 3084 4500 w -(of) 3386 4500 w -10 /LucidaTypewriter f -($objtype) 3532 4500 w -10 /LucidaSansUnicode00 f -(can) 4156 4500 w -(be) 4372 4500 w -(used) 4540 4500 w -(by) 4821 4500 w -(a) 4985 4500 w -10 /LucidaTypewriter f -(mkfile) 720 4620 w -10 /LucidaSansUnicode00 f -(to configure the compilation environment.) 1184 4620 w -(In each machine) 970 4776 w +(compiled) 2123 4620 w +10 /LucidaSansUnicode00 f +(for.) 2604 4620 w +(The) 2855 4620 w +(value) 3084 4620 w +(of) 3386 4620 w +10 /LucidaTypewriter f +($objtype) 3532 4620 w +10 /LucidaSansUnicode00 f +(can) 4156 4620 w +(be) 4372 4620 w +(used) 4540 4620 w +(by) 4821 4620 w +(a) 4985 4620 w +10 /LucidaTypewriter f +(mkfile) 720 4740 w +10 /LucidaSansUnicode00 f +(to configure the compilation environment.) 1184 4740 w +(In each machine) 970 4896 w 10 /LucidaSansUnicode20 f -(\031) 1757 4776 w -10 /LucidaSansUnicode00 f -(s root directory there is a) 1789 4776 w -(short) 3051 4776 w -10 /LucidaTypewriter f -(mkfile) 3336 4776 w -10 /LucidaSansUnicode00 f -(that) 3801 4776 w -(defines) 4025 4776 w -(a) 4412 4776 w -(set) 4500 4776 w -(of) 4677 4776 w -(mac\255) 4808 4776 w -(ros for the compiler, loader, etc.) 720 4896 w -(Here is) 2359 4896 w -10 /LucidaTypewriter f -(/mips/mkfile) 2730 4896 w -10 /LucidaSansUnicode00 f -(:) 3594 4896 w +(\031) 1757 4896 w +10 /LucidaSansUnicode00 f +(s root directory there is a) 1789 4896 w +(short) 3051 4896 w +10 /LucidaTypewriter f +(mkfile) 3336 4896 w +10 /LucidaSansUnicode00 f +(that) 3801 4896 w +(defines) 4025 4896 w +(a) 4412 4896 w +(set) 4500 4896 w +(of) 4677 4896 w +(mac\255) 4808 4896 w +(ros for the compiler, loader, etc.) 720 5016 w +(Here is) 2359 5016 w +10 /LucidaTypewriter f +(/mips/mkfile) 2730 5016 w +10 /LucidaSansUnicode00 f +(:) 3594 5016 w 9 /LucidaTypewriter f -() 3373 1356 w -10 /LucidaSansUnicode00 f -(,) 3949 1356 w -(contains) 4018 1356 w -(no) 4464 1356 w -(buffered) 4625 1356 w -(I/O) 720 1476 w -(package.) 919 1476 w -(It) 1422 1476 w -(does) 1527 1476 w -(have) 1797 1476 w -(several) 2061 1476 w -(entry) 2440 1476 w -(points) 2727 1476 w -(for) 3069 1476 w -(printing) 3247 1476 w -(formatted) 3670 1476 w -(text:) 4188 1476 w -10 /LucidaTypewriter f -(print) 4449 1476 w -10 /LucidaSansUnicode00 f -(out\255) 4847 1476 w -(puts) 720 1596 w -(text) 994 1596 w -(to) 1246 1596 w -(the) 1406 1596 w -(standard) 1623 1596 w -(output,) 2112 1596 w -10 /LucidaTypewriter f -(fprint) 2528 1596 w -10 /LucidaSansUnicode00 f -(outputs) 3022 1596 w -(text) 3457 1596 w -(to) 3710 1596 w -(a) 3870 1596 w -(specified) 3987 1596 w -(integer) 4484 1596 w -(file) 4889 1596 w -(descriptor,) 720 1716 w -(and) 1284 1716 w -10 /LucidaTypewriter f -(sprint) 1503 1716 w -10 /LucidaSansUnicode00 f -(places) 1974 1716 w -(text) 2317 1716 w -(in) 2546 1716 w -(a) 2675 1716 w -(character) 2768 1716 w -(array.) 3255 1716 w -(To) 3601 1716 w -(access) 3763 1716 w -(library) 4116 1716 w -(routines) 4464 1716 w -(for) 4901 1716 w -(buffered I/O, a program must) 720 1836 w -(explicitly) 2202 1836 w -(include) 2671 1836 w -(the) 3056 1836 w -(header) 3244 1836 w -(file) 3610 1836 w -(associated) 3794 1836 w -(with) 4336 1836 w -(an) 4574 1836 w -(appro\255) 4724 1836 w -(priate library.) 720 1956 w -(The) 970 2112 w -(recommended) 1187 2112 w -(I/O) 1918 2112 w -(library,) 2115 2112 w -(used) 2494 2112 w -(by) 2763 2112 w -(most) 2915 2112 w -(Plan) 3194 2112 w -(9) 3432 2112 w -(utilities,) 3532 2112 w -(is) 3960 2112 w -10 /LucidaTypewriter f -(bio) 4077 2112 w -10 /LucidaSansUnicode00 f -(\(buffered) 4330 2112 w -(I/O\),) 4815 2112 w -(defined) 720 2232 w -(by) 1149 2232 w -10 /LucidaTypewriter f -() 1327 2232 w -10 /LucidaSansUnicode00 f -(.) 1831 2232 w -(There) 1958 2232 w -(also) 2299 2232 w -(exists) 2558 2232 w -(an) 2905 2232 w -(implementation) 3084 2232 w -(of) 3908 2232 w -(ANSI) 4068 2232 w -(Standard) 4356 2232 w -(I/O,) 4848 2232 w -10 /LucidaTypewriter f -(stdio) 720 2352 w -10 /LucidaSansUnicode00 f -(.) 1080 2352 w -10 /LucidaTypewriter f -(Bio) 970 2508 w -10 /LucidaSansUnicode00 f -(is) 1225 2508 w -(small) 1344 2508 w -(and) 1640 2508 w -(efficient,) 1859 2508 w -(particularly) 2324 2508 w -(for) 2907 2508 w -(buffer-at-a-time) 3085 2508 w -(or) 3956 2508 w -(line-at-a-time) 4097 2508 w -(I/O.) 4848 2508 w -(Even) 720 2628 w -(for) 993 2628 w -(character-at-a-time) 1181 2628 w -(I/O,) 2215 2628 w -(however,) 2456 2628 w -(it) 2942 2628 w -(is) 3057 2628 w -(significantly) 3185 2628 w -(faster) 3818 2628 w -(than) 4143 2628 w -(the) 4407 2628 w -(Standard) 4610 2628 w -(I/O) 720 2748 w -(library,) 917 2748 w -10 /LucidaTypewriter f -(stdio) 1296 2748 w -10 /LucidaSansUnicode00 f -(.) 1656 2748 w -(Its) 1757 2748 w -(interface) 1911 2748 w -(is) 2372 2748 w -(compact) 2489 2748 w -(and) 2937 2748 w -(regular,) 3154 2748 w -(although) 3570 2748 w -(it) 4038 2748 w -(lacks) 4142 2748 w -(a) 4424 2748 w -(few) 4517 2748 w -(conve\255) 4725 2748 w -(niences.) 720 2868 w -(The) 1203 2868 w -(most) 1436 2868 w -(noticeable) 1730 2868 w -(is) 2281 2868 w -(that) 2413 2868 w -(one) 2656 2868 w -(must) 2887 2868 w -(explicitly) 3182 2868 w -(define) 3670 2868 w -(buffers) 4025 2868 w -(for) 4423 2868 w -(standard) 4613 2868 w -(input) 720 2988 w -(and) 1019 2988 w -(output;) 1245 2988 w -10 /LucidaTypewriter f -(bio) 1645 2988 w -10 /LucidaSansUnicode00 f -(does) 1907 2988 w -(not) 2184 2988 w -(predefine) 2390 2988 w -(them.) 2899 2988 w -(Here) 3257 2988 w -(is) 3531 2988 w -(a) 3658 2988 w -(program) 3760 2988 w -(to) 4223 2988 w -(copy) 4368 2988 w -(input) 4642 2988 w -(to) 4942 2988 w -(output a byte at a time using) 720 3108 w -10 /LucidaTypewriter f -(bio) 2157 3108 w -10 /LucidaSansUnicode00 f -(:) 2373 3108 w +(I/O) 720 1320 w +10 /LucidaSansUnicode00 f +(The) 970 1476 w +(default) 1188 1476 w +(C) 1564 1476 w +(library,) 1670 1476 w +(defined) 2049 1476 w +(by) 2452 1476 w +(the) 2604 1476 w +(include) 2796 1476 w +(file) 3185 1476 w +10 /LucidaTypewriter f +() 3373 1476 w +10 /LucidaSansUnicode00 f +(,) 3949 1476 w +(contains) 4018 1476 w +(no) 4464 1476 w +(buffered) 4625 1476 w +(I/O) 720 1596 w +(package.) 919 1596 w +(It) 1422 1596 w +(does) 1527 1596 w +(have) 1797 1596 w +(several) 2061 1596 w +(entry) 2440 1596 w +(points) 2727 1596 w +(for) 3069 1596 w +(printing) 3247 1596 w +(formatted) 3670 1596 w +(text:) 4188 1596 w +10 /LucidaTypewriter f +(print) 4449 1596 w +10 /LucidaSansUnicode00 f +(out\255) 4847 1596 w +(puts) 720 1716 w +(text) 994 1716 w +(to) 1246 1716 w +(the) 1406 1716 w +(standard) 1623 1716 w +(output,) 2112 1716 w +10 /LucidaTypewriter f +(fprint) 2528 1716 w +10 /LucidaSansUnicode00 f +(outputs) 3022 1716 w +(text) 3457 1716 w +(to) 3710 1716 w +(a) 3870 1716 w +(specified) 3987 1716 w +(integer) 4484 1716 w +(file) 4889 1716 w +(descriptor,) 720 1836 w +(and) 1284 1836 w +10 /LucidaTypewriter f +(sprint) 1503 1836 w +10 /LucidaSansUnicode00 f +(places) 1974 1836 w +(text) 2317 1836 w +(in) 2546 1836 w +(a) 2675 1836 w +(character) 2768 1836 w +(array.) 3255 1836 w +(To) 3601 1836 w +(access) 3763 1836 w +(library) 4116 1836 w +(routines) 4464 1836 w +(for) 4901 1836 w +(buffered I/O, a program must) 720 1956 w +(explicitly) 2202 1956 w +(include) 2671 1956 w +(the) 3056 1956 w +(header) 3244 1956 w +(file) 3610 1956 w +(associated) 3794 1956 w +(with) 4336 1956 w +(an) 4574 1956 w +(appro\255) 4724 1956 w +(priate library.) 720 2076 w +(The) 970 2232 w +(recommended) 1187 2232 w +(I/O) 1918 2232 w +(library,) 2115 2232 w +(used) 2494 2232 w +(by) 2763 2232 w +(most) 2915 2232 w +(Plan) 3194 2232 w +(9) 3432 2232 w +(utilities,) 3532 2232 w +(is) 3960 2232 w +10 /LucidaTypewriter f +(bio) 4077 2232 w +10 /LucidaSansUnicode00 f +(\(buffered) 4330 2232 w +(I/O\),) 4815 2232 w +(defined) 720 2352 w +(by) 1149 2352 w +10 /LucidaTypewriter f +() 1327 2352 w +10 /LucidaSansUnicode00 f +(.) 1831 2352 w +(There) 1958 2352 w +(also) 2299 2352 w +(exists) 2558 2352 w +(an) 2905 2352 w +(implementation) 3084 2352 w +(of) 3908 2352 w +(ANSI) 4068 2352 w +(Standard) 4356 2352 w +(I/O,) 4848 2352 w +10 /LucidaTypewriter f +(stdio) 720 2472 w +10 /LucidaSansUnicode00 f +(.) 1080 2472 w +10 /LucidaTypewriter f +(Bio) 970 2628 w +10 /LucidaSansUnicode00 f +(is) 1225 2628 w +(small) 1344 2628 w +(and) 1640 2628 w +(efficient,) 1859 2628 w +(particularly) 2324 2628 w +(for) 2907 2628 w +(buffer-at-a-time) 3085 2628 w +(or) 3956 2628 w +(line-at-a-time) 4097 2628 w +(I/O.) 4848 2628 w +(Even) 720 2748 w +(for) 993 2748 w +(character-at-a-time) 1181 2748 w +(I/O,) 2215 2748 w +(however,) 2456 2748 w +(it) 2942 2748 w +(is) 3057 2748 w +(significantly) 3185 2748 w +(faster) 3818 2748 w +(than) 4143 2748 w +(the) 4407 2748 w +(Standard) 4610 2748 w +(I/O) 720 2868 w +(library,) 917 2868 w +10 /LucidaTypewriter f +(stdio) 1296 2868 w +10 /LucidaSansUnicode00 f +(.) 1656 2868 w +(Its) 1757 2868 w +(interface) 1911 2868 w +(is) 2372 2868 w +(compact) 2489 2868 w +(and) 2937 2868 w +(regular,) 3154 2868 w +(although) 3570 2868 w +(it) 4038 2868 w +(lacks) 4142 2868 w +(a) 4424 2868 w +(few) 4517 2868 w +(conve\255) 4725 2868 w +(niences.) 720 2988 w +(The) 1203 2988 w +(most) 1436 2988 w +(noticeable) 1730 2988 w +(is) 2281 2988 w +(that) 2413 2988 w +(one) 2656 2988 w +(must) 2887 2988 w +(explicitly) 3182 2988 w +(define) 3670 2988 w +(buffers) 4025 2988 w +(for) 4423 2988 w +(standard) 4613 2988 w +(input) 720 3108 w +(and) 1019 3108 w +(output;) 1245 3108 w +10 /LucidaTypewriter f +(bio) 1645 3108 w +10 /LucidaSansUnicode00 f +(does) 1907 3108 w +(not) 2184 3108 w +(predefine) 2390 3108 w +(them.) 2899 3108 w +(Here) 3257 3108 w +(is) 3531 3108 w +(a) 3658 3108 w +(program) 3760 3108 w +(to) 4223 3108 w +(copy) 4368 3108 w +(input) 4642 3108 w +(to) 4942 3108 w +(output a byte at a time using) 720 3228 w +10 /LucidaTypewriter f +(bio) 2157 3228 w +10 /LucidaSansUnicode00 f +(:) 2373 3228 w 9 /LucidaTypewriter f -(#include) 1008 3278 w -() 1593 3278 w -(#include) 1008 3388 w -() 1593 3388 w -(#include) 1008 3498 w -() 1593 3498 w -(Biobuf) 1008 3718 w -(bin;) 1528 3718 w -(Biobuf) 1008 3828 w -(bout;) 1528 3828 w -(main\(void\)) 1008 4048 w -({) 1008 4158 w -(int) 1528 4268 w -(c;) 1788 4268 w -(Binit\(&bin,) 1528 4488 w -(0,) 2308 4488 w -(OREAD\);) 2503 4488 w -(Binit\(&bout,) 1528 4598 w -(1,) 2373 4598 w -(OWRITE\);) 2568 4598 w -(while\(\(c=Bgetc\(&bin\)\)) 1528 4818 w -(!=) 2958 4818 w -(Beof\)) 3153 4818 w -(Bputc\(&bout,) 2048 4928 w -(c\);) 2893 4928 w -(exits\(0\);) 1528 5038 w -(}) 1008 5148 w -10 /LucidaSansUnicode00 f -(For) 720 5328 w -(peak) 915 5328 w -(performance,) 1186 5328 w -(we) 1873 5328 w -(could) 2045 5328 w -(replace) 2350 5328 w -10 /LucidaTypewriter f -(Bgetc) 2740 5328 w -10 /LucidaSansUnicode00 f -(and) 3139 5328 w -10 /LucidaTypewriter f -(Bputc) 3358 5328 w -10 /LucidaSansUnicode00 f -(by) 3757 5328 w -(their) 3911 5328 w -(equivalent) 4175 5328 w -(in-line) 4715 5328 w -(macros) 720 5448 w -10 /LucidaTypewriter f -(BGETC) 1105 5448 w -10 /LucidaSansUnicode00 f -(and) 1498 5448 w -10 /LucidaTypewriter f -(BPUTC) 1711 5448 w -10 /LucidaSansUnicode00 f -(but) 2104 5448 w -(the performance gain would be modest.) 2299 5448 w -(For more infor\255) 4306 5448 w -(mation on) 720 5568 w -10 /LucidaTypewriter f -(bio) 1244 5568 w -10 /LucidaSansUnicode00 f -(, see the Programmer) 1460 5568 w +(#include) 920 3398 w +() 1505 3398 w +(#include) 920 3508 w +() 1505 3508 w +(#include) 920 3618 w +() 1505 3618 w +(Biobuf) 920 3838 w +(bin;) 1440 3838 w +(Biobuf) 920 3948 w +(bout;) 1440 3948 w +(main\(void\)) 920 4168 w +({) 920 4278 w +(int) 1440 4388 w +(c;) 1700 4388 w +(Binit\(&bin,) 1440 4608 w +(0,) 2220 4608 w +(OREAD\);) 2415 4608 w +(Binit\(&bout,) 1440 4718 w +(1,) 2285 4718 w +(OWRITE\);) 2480 4718 w +(while\(\(c=Bgetc\(&bin\)\)) 1440 4938 w +(!=) 2870 4938 w +(Beof\)) 3065 4938 w +(Bputc\(&bout,) 1960 5048 w +(c\);) 2805 5048 w +(exits\(0\);) 1440 5158 w +(}) 920 5268 w +10 /LucidaSansUnicode00 f +(For) 720 5448 w +(peak) 915 5448 w +(performance,) 1186 5448 w +(we) 1873 5448 w +(could) 2045 5448 w +(replace) 2350 5448 w +10 /LucidaTypewriter f +(Bgetc) 2740 5448 w +10 /LucidaSansUnicode00 f +(and) 3139 5448 w +10 /LucidaTypewriter f +(Bputc) 3358 5448 w +10 /LucidaSansUnicode00 f +(by) 3757 5448 w +(their) 3911 5448 w +(equivalent) 4175 5448 w +(in-line) 4715 5448 w +(macros) 720 5568 w +10 /LucidaTypewriter f +(BGETC) 1105 5568 w +10 /LucidaSansUnicode00 f +(and) 1498 5568 w +10 /LucidaTypewriter f +(BPUTC) 1711 5568 w +10 /LucidaSansUnicode00 f +(but) 2104 5568 w +(the performance gain would be modest.) 2299 5568 w +(For more infor\255) 4306 5568 w +(mation on) 720 5688 w +10 /LucidaTypewriter f +(bio) 1244 5688 w +10 /LucidaSansUnicode00 f +(, see the Programmer) 1460 5688 w 10 /LucidaSansUnicode20 f -(\031) 2504 5568 w -10 /LucidaSansUnicode00 f -(s Manual.) 2536 5568 w -(Perhaps) 970 5724 w -(the) 1389 5724 w -(most) 1580 5724 w -(dramatic) 1858 5724 w -(difference) 2318 5724 w -(in) 2842 5724 w -(the) 2969 5724 w -(I/O) 3160 5724 w -(interface) 3356 5724 w -(of) 3817 5724 w -(Plan) 3952 5724 w -(9) 4190 5724 w -(from) 4290 5724 w -(other) 4559 5724 w -(sys\255) 4853 5724 w -(tems) 720 5844 w +(\031) 2504 5688 w +10 /LucidaSansUnicode00 f +(s Manual.) 2536 5688 w +(Perhaps) 970 5844 w +(the) 1389 5844 w +(most) 1580 5844 w +(dramatic) 1858 5844 w +(difference) 2318 5844 w +(in) 2842 5844 w +(the) 2969 5844 w +(I/O) 3160 5844 w +(interface) 3356 5844 w +(of) 3817 5844 w +(Plan) 3952 5844 w +(9) 4190 5844 w +(from) 4290 5844 w +(other) 4559 5844 w +(sys\255) 4853 5844 w +(tems) 720 5964 w 10 /LucidaSansUnicode20 f -(\031) 957 5844 w -10 /LucidaSansUnicode00 f -(is) 1029 5844 w -(that) 1149 5844 w -(text) 1379 5844 w -(is) 1609 5844 w -(not) 1728 5844 w -(ASCII.) 1927 5844 w -(The) 2280 5844 w -(format) 2500 5844 w -(for) 2863 5844 w -(text) 3041 5844 w -(in) 3271 5844 w -(Plan) 3401 5844 w -(9) 3641 5844 w -(is) 3743 5844 w -(a) 3862 5844 w -(byte-stream) 3956 5844 w -(encoding) 4594 5844 w -(of) 720 5964 w -(16-bit) 859 5964 w -(characters.) 1213 5964 w -(The) 1818 5964 w -(character) 2040 5964 w -(set) 2531 5964 w -(is) 2717 5964 w -(based) 2839 5964 w -(on) 3169 5964 w -(the) 3334 5964 w -(Unicode) 3531 5964 w -(Standard) 3964 5964 w -(and) 4436 5964 w -(is) 4658 5964 w -(back\255) 4780 5964 w -(ward) 720 6084 w -(compatible) 998 6084 w -(with) 1577 6084 w -(ASCII:) 1824 6084 w -(characters) 2148 6084 w -(with) 2690 6084 w -(value) 2937 6084 w -(0) 3233 6084 w -(through) 3338 6084 w -(127) 3767 6084 w -(are) 3998 6084 w -(the) 4192 6084 w -(same) 4389 6084 w -(in) 4685 6084 w -(both) 4817 6084 w -(sets.) 720 6204 w -(The) 1017 6204 w -(16-bit) 1236 6204 w -(characters,) 1587 6204 w -(called) 2157 6204 w +(\031) 957 5964 w +10 /LucidaSansUnicode00 f +(is) 1029 5964 w +(that) 1149 5964 w +(text) 1379 5964 w +(is) 1609 5964 w +(not) 1728 5964 w +(ASCII.) 1927 5964 w +(The) 2280 5964 w +(format) 2500 5964 w +(for) 2863 5964 w +(text) 3041 5964 w +(in) 3271 5964 w +(Plan) 3401 5964 w +(9) 3641 5964 w +(is) 3743 5964 w +(a) 3862 5964 w +(byte-stream) 3956 5964 w +(encoding) 4594 5964 w +(of) 720 6084 w +(16-bit) 859 6084 w +(characters.) 1213 6084 w +(The) 1818 6084 w +(character) 2040 6084 w +(set) 2531 6084 w +(is) 2717 6084 w +(based) 2839 6084 w +(on) 3169 6084 w +(the) 3334 6084 w +(Unicode) 3531 6084 w +(Standard) 3964 6084 w +(and) 4436 6084 w +(is) 4658 6084 w +(back\255) 4780 6084 w +(ward) 720 6204 w +(compatible) 998 6204 w +(with) 1577 6204 w +(ASCII:) 1824 6204 w +(characters) 2148 6204 w +(with) 2690 6204 w +(value) 2937 6204 w +(0) 3233 6204 w +(through) 3338 6204 w +(127) 3767 6204 w +(are) 3998 6204 w +(the) 4192 6204 w +(same) 4389 6204 w +(in) 4685 6204 w +(both) 4817 6204 w +(sets.) 720 6324 w +(The) 1017 6324 w +(16-bit) 1236 6324 w +(characters,) 1587 6324 w +(called) 2157 6324 w 10 /LucidaSans-Italic f -(runes) 2478 6204 w -10 /LucidaSansUnicode00 f -(in) 2790 6204 w -(Plan) 2919 6204 w -(9,) 3158 6204 w -(are) 3292 6204 w -(encoded) 3483 6204 w -(using) 3934 6204 w -(a) 4239 6204 w -(representation) 4333 6204 w -(called) 720 6324 w -(UTF,) 1047 6324 w -(an) 1309 6324 w -(encoding) 1470 6324 w -(that) 1960 6324 w -(is) 2195 6324 w -(becoming) 2319 6324 w -(accepted) 2840 6324 w -(as) 3316 6324 w -(a) 3465 6324 w -(standard.) 3563 6324 w -(\(ISO) 4097 6324 w -(calls) 4334 6324 w -(it) 4592 6324 w -(UTF-8;) 4701 6324 w -(throughout) 720 6444 w -(Plan) 1312 6444 w -(9) 1558 6444 w -(it) 1666 6444 w +(runes) 2478 6324 w +10 /LucidaSansUnicode00 f +(in) 2790 6324 w +(Plan) 2919 6324 w +(9,) 3158 6324 w +(are) 3292 6324 w +(encoded) 3483 6324 w +(using) 3934 6324 w +(a) 4239 6324 w +(representation) 4333 6324 w +(called) 720 6444 w +(UTF,) 1047 6444 w +(an) 1309 6444 w +(encoding) 1470 6444 w +(that) 1960 6444 w +(is) 2195 6444 w +(becoming) 2319 6444 w +(accepted) 2840 6444 w +(as) 3316 6444 w +(a) 3465 6444 w +(standard.) 3563 6444 w +(\(ISO) 4097 6444 w +(calls) 4334 6444 w +(it) 4592 6444 w +(UTF-8;) 4701 6444 w +(throughout) 720 6564 w +(Plan) 1312 6564 w +(9) 1558 6564 w +(it) 1666 6564 w 10 /LucidaSansUnicode20 f -(\031) 1732 6444 w -10 /LucidaSansUnicode00 f -(s) 1764 6444 w -(just) 1860 6444 w -(called) 2085 6444 w -(UTF.\)) 2414 6444 w -(UTF) 2743 6444 w -(defines) 2975 6444 w -(multibyte) 3375 6444 w -(sequences) 3879 6444 w -(to) 4433 6444 w -(represent) 4577 6444 w -(character) 720 6564 w -(values) 1208 6564 w -(from) 1552 6564 w -(0) 1823 6564 w -(to) 1925 6564 w -(65535.) 2062 6564 w -(In) 2480 6564 w -(UTF,) 2610 6564 w -(character) 2867 6564 w -(values) 3355 6564 w -(up) 3699 6564 w -(to) 3863 6564 w -(127) 4000 6564 w -(decimal,) 4227 6564 w -(7F) 4673 6564 w -(hex\255) 4828 6564 w -(adecimal,) 720 6684 w -(represent) 1235 6684 w -(themselves,) 1750 6684 w -(so) 2377 6684 w -(straight) 2541 6684 w -(ASCII) 2967 6684 w -(files) 3269 6684 w -(are) 3523 6684 w -(also) 3727 6684 w -(valid) 3975 6684 w -(UTF.) 4256 6684 w -(Also,) 4559 6684 w -(UTF) 4854 6684 w -(guarantees) 720 6804 w -(that) 1292 6804 w -(bytes) 1518 6804 w -(with) 1812 6804 w -(values) 2052 6804 w -(0) 2392 6804 w -(to) 2490 6804 w -(127) 2623 6804 w -(\(NUL) 2847 6804 w -(to) 3111 6804 w -(DEL,) 3244 6804 w -(inclusive\)) 3492 6804 w -(will) 3980 6804 w -(appear) 4178 6804 w -(only) 4545 6804 w -(when) 4783 6804 w -(they) 720 6924 w -(represent) 968 6924 w -(themselves,) 1472 6924 w -(so) 2088 6924 w -(programs) 2241 6924 w -(that) 2749 6924 w -(read) 2981 6924 w -(bytes) 3237 6924 w -(looking) 3537 6924 w -(for) 3940 6924 w -(plain) 4120 6924 w -(ASCII) 4400 6924 w -(charac\255) 4692 6924 w -(ters) 720 7044 w -(will) 959 7044 w -(continue) 1177 7044 w -(to) 1650 7044 w -(work.) 1801 7044 w -(Any) 2155 7044 w -(program) 2391 7044 w -(that) 2860 7044 w -(expects) 3104 7044 w -(a) 3532 7044 w -(one-to-one) 3640 7044 w -(correspondence) 4265 7044 w -(between) 720 7164 w -(bytes) 1167 7164 w -(and) 1466 7164 w -(characters) 1686 7164 w -(will,) 2226 7164 w -(however,) 2462 7164 w -(need) 2939 7164 w -(to) 3216 7164 w -(be) 3354 7164 w -(modified.) 3514 7164 w -(An) 4050 7164 w -(example) 4222 7164 w -(is) 4676 7164 w -(pars\255) 4797 7164 w -(ing) 720 7284 w -(file) 921 7284 w -(names.) 1120 7284 w -(File) 1549 7284 w -(names,) 1765 7284 w -(like) 2162 7284 w -(all) 2382 7284 w -(text,) 2543 7284 w -(are) 2814 7284 w -(in) 3013 7284 w -(UTF,) 3151 7284 w -(so) 3416 7284 w -(it) 3575 7284 w -(is) 3688 7284 w -(incorrect) 3815 7284 w -(to) 4291 7284 w -(search) 4436 7284 w -(for) 4799 7284 w -(a) 4985 7284 w +(\031) 1732 6564 w +10 /LucidaSansUnicode00 f +(s) 1764 6564 w +(just) 1860 6564 w +(called) 2085 6564 w +(UTF.\)) 2414 6564 w +(UTF) 2743 6564 w +(defines) 2975 6564 w +(multibyte) 3375 6564 w +(sequences) 3879 6564 w +(to) 4433 6564 w +(represent) 4577 6564 w +(character) 720 6684 w +(values) 1208 6684 w +(from) 1552 6684 w +(0) 1823 6684 w +(to) 1925 6684 w +(65535.) 2062 6684 w +(In) 2480 6684 w +(UTF,) 2610 6684 w +(character) 2867 6684 w +(values) 3355 6684 w +(up) 3699 6684 w +(to) 3863 6684 w +(127) 4000 6684 w +(decimal,) 4227 6684 w +(7F) 4673 6684 w +(hex\255) 4828 6684 w +(adecimal,) 720 6804 w +(represent) 1235 6804 w +(themselves,) 1750 6804 w +(so) 2377 6804 w +(straight) 2541 6804 w +(ASCII) 2967 6804 w +(files) 3269 6804 w +(are) 3523 6804 w +(also) 3727 6804 w +(valid) 3975 6804 w +(UTF.) 4256 6804 w +(Also,) 4559 6804 w +(UTF) 4854 6804 w +(guarantees) 720 6924 w +(that) 1292 6924 w +(bytes) 1518 6924 w +(with) 1812 6924 w +(values) 2052 6924 w +(0) 2392 6924 w +(to) 2490 6924 w +(127) 2623 6924 w +(\(NUL) 2847 6924 w +(to) 3111 6924 w +(DEL,) 3244 6924 w +(inclusive\)) 3492 6924 w +(will) 3980 6924 w +(appear) 4178 6924 w +(only) 4545 6924 w +(when) 4783 6924 w +(they) 720 7044 w +(represent) 968 7044 w +(themselves,) 1472 7044 w +(so) 2088 7044 w +(programs) 2241 7044 w +(that) 2749 7044 w +(read) 2981 7044 w +(bytes) 3237 7044 w +(looking) 3537 7044 w +(for) 3940 7044 w +(plain) 4120 7044 w +(ASCII) 4400 7044 w +(charac\255) 4692 7044 w +(ters) 720 7164 w +(will) 959 7164 w +(continue) 1177 7164 w +(to) 1650 7164 w +(work.) 1801 7164 w +(Any) 2155 7164 w +(program) 2391 7164 w +(that) 2860 7164 w +(expects) 3104 7164 w +(a) 3532 7164 w +(one-to-one) 3640 7164 w +(correspondence) 4265 7164 w +(between) 720 7284 w +(bytes) 1191 7284 w +(and) 1514 7284 w +(characters) 1758 7284 w +(will,) 2322 7284 w +(however,) 2582 7284 w +(need) 3083 7284 w +(to) 3384 7284 w +(be) 3546 7284 w +(modified.) 3729 7284 w +(An) 4288 7284 w +(example) 4483 7284 w +(is) 4960 7284 w cleartomark showpage saveobj restore @@ -7714,634 +7702,653 @@ 9 pagesetup 10 /LucidaSansUnicode00 f (\255 9 \255) 2783 480 w -(character) 720 840 w -(in) 1208 840 w -(a) 1338 840 w -(string) 1432 840 w -(by) 1753 840 w -10 /LucidaTypewriter f -(strchr\(filename,) 1907 840 w -(c\)) 3098 840 w -10 /LucidaSansUnicode00 f -(because) 3281 840 w -(the) 3714 840 w -(character) 3908 840 w -(might) 4397 840 w -(have) 4720 840 w +(parsing) 720 840 w +(file) 1119 840 w +(names.) 1306 840 w +(File) 1723 840 w +(names,) 1927 840 w +(like) 2312 840 w +(all) 2520 840 w +(text,) 2669 840 w +(are) 2928 840 w +(in) 3116 840 w +(UTF,) 3243 840 w +(so) 3497 840 w +(it) 3645 840 w +(is) 3747 840 w +(incorrect) 3863 840 w +(to) 4327 840 w +(search) 4460 840 w +(for) 4811 840 w (a) 4985 840 w -(multi-byte) 720 960 w -(encoding.) 1310 960 w -(The) 1894 960 w -(correct) 2149 960 w -(method) 2561 960 w -(is) 3006 960 w -(to) 3159 960 w -(call) 3330 960 w -10 /LucidaTypewriter f -(utfrune\(filename,) 3567 960 w -(c\)) 4864 960 w -10 /LucidaSansUnicode00 f -(,) 5008 960 w -(defined) 720 1080 w -(in) 1126 1080 w +(character) 720 960 w +(in) 1208 960 w +(a) 1338 960 w +(string) 1432 960 w +(by) 1753 960 w +10 /LucidaTypewriter f +(strchr\(filename,) 1907 960 w +(c\)) 3098 960 w +10 /LucidaSansUnicode00 f +(because) 3281 960 w +(the) 3714 960 w +(character) 3908 960 w +(might) 4397 960 w +(have) 4720 960 w +(a) 4985 960 w +(multi-byte) 720 1080 w +(encoding.) 1310 1080 w +(The) 1894 1080 w +(correct) 2149 1080 w +(method) 2561 1080 w +(is) 3006 1080 w +(to) 3159 1080 w +(call) 3330 1080 w +10 /LucidaTypewriter f +(utfrune\(filename,) 3567 1080 w +(c\)) 4864 1080 w +10 /LucidaSansUnicode00 f +(,) 5008 1080 w +(defined) 720 1200 w +(in) 1126 1200 w 10 /LucidaSans-Italic f -(rune) 1257 1080 w -10 /LucidaSansUnicode00 f -(\(2\),) 1482 1080 w -(which) 1683 1080 w -(interprets) 2004 1080 w -(the) 2517 1080 w -(file) 2712 1080 w -(name) 2903 1080 w -(as) 3209 1080 w -(a) 3355 1080 w -(sequence) 3450 1080 w -(of) 3948 1080 w -(encoded) 4087 1080 w -(characters) 4540 1080 w -(rather) 720 1200 w -(than) 1055 1200 w -(bytes.) 1314 1200 w -(In) 1680 1200 w -(fact,) 1813 1200 w -(even) 2067 1200 w -(when) 2335 1200 w -(you) 2634 1200 w -(know) 2851 1200 w -(the) 3151 1200 w -(character) 3348 1200 w -(is) 3839 1200 w -(a) 3961 1200 w -(single) 4058 1200 w -(byte) 4389 1200 w -(that) 4639 1200 w -(can) 4872 1200 w -(represent) 720 1320 w -(only) 1226 1320 w -(itself,) 1473 1320 w -(it) 1787 1320 w -(is) 1896 1320 w -(safer) 2020 1320 w -(to) 2304 1320 w -(use) 2446 1320 w -10 /LucidaTypewriter f -(utfrune) 2659 1320 w -10 /LucidaSansUnicode00 f -(because) 3207 1320 w -(that) 3645 1320 w -(assumes) 3880 1320 w -(nothing) 4343 1320 w -(about) 4762 1320 w -(the character set and its representation.) 720 1440 w -(The) 970 1596 w -(library) 1201 1596 w -(defines) 1561 1596 w -(several) 1965 1596 w -(symbols) 2356 1596 w -(relevant) 2807 1596 w -(to) 3246 1596 w -(the) 3395 1596 w -(representation) 3601 1596 w -(of) 4359 1596 w -(characters.) 4508 1596 w -(Any) 720 1716 w -(byte) 950 1716 w -(with) 1205 1716 w -(unsigned) 1457 1716 w -(value) 1951 1716 w -(less) 2252 1716 w -(than) 2486 1716 w -10 /LucidaTypewriter f -(Runesync) 2749 1716 w -10 /LucidaSansUnicode00 f -(will) 3372 1716 w -(not) 3583 1716 w -(appear) 3790 1716 w -(in) 4170 1716 w -(any) 4308 1716 w -(multi-byte) 4524 1716 w -(encoding) 720 1836 w -(of) 1223 1836 w -(a) 1378 1836 w -(character.) 1490 1836 w -10 /LucidaTypewriter f -(Utfrune) 2060 1836 w -10 /LucidaSansUnicode00 f -(compares) 2621 1836 w -(the) 3149 1836 w -(character) 3361 1836 w -(being) 3867 1836 w -(searched) 4196 1836 w -(against) 4689 1836 w -10 /LucidaTypewriter f -(Runesync) 720 1956 w -10 /LucidaSansUnicode00 f -(to) 1334 1956 w -(see) 1470 1956 w -(if) 1671 1956 w -(it) 1775 1956 w -(is) 1879 1956 w -(sufficient) 1997 1956 w -(to) 2486 1956 w -(call) 2622 1956 w -10 /LucidaTypewriter f -(strchr) 2824 1956 w -10 /LucidaSansUnicode00 f -(or) 3294 1956 w -(if) 3434 1956 w -(the) 3538 1956 w -(byte) 3731 1956 w -(stream) 3976 1956 w -(must) 4346 1956 w -(be) 4626 1956 w -(inter\255) 4782 1956 w -(preted.) 720 2076 w -(Any) 1141 2076 w -(byte) 1365 2076 w -(with) 1614 2076 w -(unsigned) 1861 2076 w -(value) 2350 2076 w -(less) 2646 2076 w -(than) 2875 2076 w -10 /LucidaTypewriter f -(Runeself) 3133 2076 w -10 /LucidaSansUnicode00 f -(is) 3751 2076 w -(represented) 3873 2076 w -(by) 4497 2076 w -(a) 4654 2076 w -(single) 4751 2076 w -(byte) 720 2196 w -(with) 982 2196 w -(the) 1241 2196 w -(same) 1450 2196 w -(value.) 1759 2196 w -(Finally,) 2131 2196 w -(when) 2527 2196 w -(errors) 2838 2196 w -(are) 3183 2196 w -(encountered) 3389 2196 w -(converting) 4050 2196 w -(to) 4617 2196 w -(runes) 4768 2196 w -(from) 720 2316 w -(a) 988 2316 w -(byte) 1079 2316 w -(stream,) 1323 2316 w -(the) 1724 2316 w -(library) 1915 2316 w -(returns) 2261 2316 w -(the) 2648 2316 w -(rune) 2840 2316 w -(value) 3098 2316 w -10 /LucidaTypewriter f -(Runeerror) 3389 2316 w -10 /LucidaSansUnicode00 f -(and) 4074 2316 w -(advances) 4291 2316 w -(a) 4773 2316 w -(sin\255) 4865 2316 w -(gle byte.) 720 2436 w -(This permits programs to find runes embedded in binary data.) 1203 2436 w -10 /LucidaTypewriter f -(Bio) 970 2592 w -10 /LucidaSansUnicode00 f -(includes) 1224 2592 w -(routines) 1665 2592 w -10 /LucidaTypewriter f -(Bgetrune) 2102 2592 w -10 /LucidaSansUnicode00 f -(and) 2716 2592 w -10 /LucidaTypewriter f -(Bputrune) 2934 2592 w -10 /LucidaSansUnicode00 f -(to) 3548 2592 w -(transform) 3685 2592 w -(the) 4202 2592 w -(external) 4396 2592 w -(byte) 4832 2592 w -(stream) 720 2712 w -(UTF) 1098 2712 w -(format) 1329 2712 w -(to) 1698 2712 w -(and) 1841 2712 w -(from) 2066 2712 w -(internal) 2343 2712 w -(16-bit) 2759 2712 w -(runes.) 3117 2712 w -(Also,) 3497 2712 w -(the) 3783 2712 w -10 /LucidaTypewriter f -(%s) 3982 2712 w -10 /LucidaSansUnicode00 f -(format) 4170 2712 w -(to) 4538 2712 w -10 /LucidaTypewriter f -(print) 4680 2712 w -10 /LucidaSansUnicode00 f -(accepts) 720 2832 w -(UTF;) 1123 2832 w -10 /LucidaTypewriter f -(%c) 1380 2832 w -10 /LucidaSansUnicode00 f -(prints) 1563 2832 w -(a) 1885 2832 w -(character) 1979 2832 w -(after) 2467 2832 w -(narrowing) 2732 2832 w -(it) 3262 2832 w -(to) 3368 2832 w -(8) 3506 2832 w -(bits.) 3609 2832 w -(The) 3893 2832 w -10 /LucidaTypewriter f -(%S) 4114 2832 w -10 /LucidaSansUnicode00 f -(format) 4298 2832 w -(prints) 4662 2832 w -(a) 4985 2832 w -(null-terminated) 720 2952 w -(sequence) 1531 2952 w -(of) 2030 2952 w -(runes;) 2170 2952 w -10 /LucidaTypewriter f -(%C) 2516 2952 w -10 /LucidaSansUnicode00 f -(prints) 2702 2952 w -(a) 3027 2952 w -(character) 3124 2952 w -(after) 3615 2952 w -(narrowing) 3883 2952 w -(it) 4415 2952 w -(to) 4522 2952 w -(16) 4661 2952 w -(bits.) 4828 2952 w -(For) 720 3072 w -(more) 925 3072 w -(information,) 1225 3072 w -(see) 1873 3072 w -(the) 2086 3072 w -(Programmer) 2291 3072 w +(rune) 1257 1200 w +10 /LucidaSansUnicode00 f +(\(2\),) 1482 1200 w +(which) 1683 1200 w +(interprets) 2004 1200 w +(the) 2517 1200 w +(file) 2712 1200 w +(name) 2903 1200 w +(as) 3209 1200 w +(a) 3355 1200 w +(sequence) 3450 1200 w +(of) 3948 1200 w +(encoded) 4087 1200 w +(characters) 4540 1200 w +(rather) 720 1320 w +(than) 1055 1320 w +(bytes.) 1314 1320 w +(In) 1680 1320 w +(fact,) 1813 1320 w +(even) 2067 1320 w +(when) 2335 1320 w +(you) 2634 1320 w +(know) 2851 1320 w +(the) 3151 1320 w +(character) 3348 1320 w +(is) 3839 1320 w +(a) 3961 1320 w +(single) 4058 1320 w +(byte) 4389 1320 w +(that) 4639 1320 w +(can) 4872 1320 w +(represent) 720 1440 w +(only) 1226 1440 w +(itself,) 1473 1440 w +(it) 1787 1440 w +(is) 1896 1440 w +(safer) 2020 1440 w +(to) 2304 1440 w +(use) 2446 1440 w +10 /LucidaTypewriter f +(utfrune) 2659 1440 w +10 /LucidaSansUnicode00 f +(because) 3207 1440 w +(that) 3645 1440 w +(assumes) 3880 1440 w +(nothing) 4343 1440 w +(about) 4762 1440 w +(the character set and its representation.) 720 1560 w +(The) 970 1716 w +(library) 1201 1716 w +(defines) 1561 1716 w +(several) 1965 1716 w +(symbols) 2356 1716 w +(relevant) 2807 1716 w +(to) 3246 1716 w +(the) 3395 1716 w +(representation) 3601 1716 w +(of) 4359 1716 w +(characters.) 4508 1716 w +(Any) 720 1836 w +(byte) 950 1836 w +(with) 1205 1836 w +(unsigned) 1457 1836 w +(value) 1951 1836 w +(less) 2252 1836 w +(than) 2486 1836 w +10 /LucidaTypewriter f +(Runesync) 2749 1836 w +10 /LucidaSansUnicode00 f +(will) 3372 1836 w +(not) 3583 1836 w +(appear) 3790 1836 w +(in) 4170 1836 w +(any) 4308 1836 w +(multi-byte) 4524 1836 w +(encoding) 720 1956 w +(of) 1223 1956 w +(a) 1378 1956 w +(character.) 1490 1956 w +10 /LucidaTypewriter f +(Utfrune) 2060 1956 w +10 /LucidaSansUnicode00 f +(compares) 2621 1956 w +(the) 3149 1956 w +(character) 3361 1956 w +(being) 3867 1956 w +(searched) 4196 1956 w +(against) 4689 1956 w +10 /LucidaTypewriter f +(Runesync) 720 2076 w +10 /LucidaSansUnicode00 f +(to) 1334 2076 w +(see) 1470 2076 w +(if) 1671 2076 w +(it) 1775 2076 w +(is) 1879 2076 w +(sufficient) 1997 2076 w +(to) 2486 2076 w +(call) 2622 2076 w +10 /LucidaTypewriter f +(strchr) 2824 2076 w +10 /LucidaSansUnicode00 f +(or) 3294 2076 w +(if) 3434 2076 w +(the) 3538 2076 w +(byte) 3731 2076 w +(stream) 3976 2076 w +(must) 4346 2076 w +(be) 4626 2076 w +(inter\255) 4782 2076 w +(preted.) 720 2196 w +(Any) 1141 2196 w +(byte) 1365 2196 w +(with) 1614 2196 w +(unsigned) 1861 2196 w +(value) 2350 2196 w +(less) 2646 2196 w +(than) 2875 2196 w +10 /LucidaTypewriter f +(Runeself) 3133 2196 w +10 /LucidaSansUnicode00 f +(is) 3751 2196 w +(represented) 3873 2196 w +(by) 4497 2196 w +(a) 4654 2196 w +(single) 4751 2196 w +(byte) 720 2316 w +(with) 982 2316 w +(the) 1241 2316 w +(same) 1450 2316 w +(value.) 1759 2316 w +(Finally,) 2131 2316 w +(when) 2527 2316 w +(errors) 2838 2316 w +(are) 3183 2316 w +(encountered) 3389 2316 w +(converting) 4050 2316 w +(to) 4617 2316 w +(runes) 4768 2316 w +(from) 720 2436 w +(a) 988 2436 w +(byte) 1079 2436 w +(stream,) 1323 2436 w +(the) 1724 2436 w +(library) 1915 2436 w +(returns) 2261 2436 w +(the) 2648 2436 w +(rune) 2840 2436 w +(value) 3098 2436 w +10 /LucidaTypewriter f +(Runeerror) 3389 2436 w +10 /LucidaSansUnicode00 f +(and) 4074 2436 w +(advances) 4291 2436 w +(a) 4773 2436 w +(sin\255) 4865 2436 w +(gle byte.) 720 2556 w +(This permits programs to find runes embedded in binary data.) 1203 2556 w +10 /LucidaTypewriter f +(Bio) 970 2712 w +10 /LucidaSansUnicode00 f +(includes) 1224 2712 w +(routines) 1665 2712 w +10 /LucidaTypewriter f +(Bgetrune) 2102 2712 w +10 /LucidaSansUnicode00 f +(and) 2716 2712 w +10 /LucidaTypewriter f +(Bputrune) 2934 2712 w +10 /LucidaSansUnicode00 f +(to) 3548 2712 w +(transform) 3685 2712 w +(the) 4202 2712 w +(external) 4396 2712 w +(byte) 4832 2712 w +(stream) 720 2832 w +(UTF) 1098 2832 w +(format) 1329 2832 w +(to) 1698 2832 w +(and) 1841 2832 w +(from) 2066 2832 w +(internal) 2343 2832 w +(16-bit) 2759 2832 w +(runes.) 3117 2832 w +(Also,) 3497 2832 w +(the) 3783 2832 w +10 /LucidaTypewriter f +(%s) 3982 2832 w +10 /LucidaSansUnicode00 f +(format) 4170 2832 w +(to) 4538 2832 w +10 /LucidaTypewriter f +(print) 4680 2832 w +10 /LucidaSansUnicode00 f +(accepts) 720 2952 w +(UTF;) 1123 2952 w +10 /LucidaTypewriter f +(%c) 1380 2952 w +10 /LucidaSansUnicode00 f +(prints) 1563 2952 w +(a) 1885 2952 w +(character) 1979 2952 w +(after) 2467 2952 w +(narrowing) 2732 2952 w +(it) 3262 2952 w +(to) 3368 2952 w +(8) 3506 2952 w +(bits.) 3609 2952 w +(The) 3893 2952 w +10 /LucidaTypewriter f +(%S) 4114 2952 w +10 /LucidaSansUnicode00 f +(format) 4298 2952 w +(prints) 4662 2952 w +(a) 4985 2952 w +(null-terminated) 720 3072 w +(sequence) 1531 3072 w +(of) 2030 3072 w +(runes;) 2170 3072 w +10 /LucidaTypewriter f +(%C) 2516 3072 w +10 /LucidaSansUnicode00 f +(prints) 2702 3072 w +(a) 3027 3072 w +(character) 3124 3072 w +(after) 3615 3072 w +(narrowing) 3883 3072 w +(it) 4415 3072 w +(to) 4522 3072 w +(16) 4661 3072 w +(bits.) 4828 3072 w +(For) 720 3192 w +(more) 925 3192 w +(information,) 1225 3192 w +(see) 1873 3192 w +(the) 2086 3192 w +(Programmer) 2291 3192 w 10 /LucidaSansUnicode20 f -(\031) 2889 3072 w -10 /LucidaSansUnicode00 f -(s) 2921 3072 w -(Manual,) 3022 3072 w -(in) 3453 3072 w -(particular) 3594 3072 w +(\031) 2889 3192 w +10 /LucidaSansUnicode00 f +(s) 2921 3192 w +(Manual,) 3022 3192 w +(in) 3453 3192 w +(particular) 3594 3192 w 10 /LucidaSans-Italic f -(utf) 4107 3072 w -10 /LucidaSansUnicode00 f -(\(6\)) 4245 3072 w -(and) 4424 3072 w +(utf) 4107 3192 w +10 /LucidaSansUnicode00 f +(\(6\)) 4245 3192 w +(and) 4424 3192 w 10 /LucidaSans-Italic f -(rune) 4654 3072 w -10 /LucidaSansUnicode00 f -(\(2\),) 4879 3072 w -(and) 720 3192 w -(the) 939 3192 w -(paper,) 1133 3192 w +(rune) 4654 3192 w +10 /LucidaSansUnicode00 f +(\(2\),) 4879 3192 w +(and) 720 3312 w +(the) 939 3312 w +(paper,) 1133 3312 w 10 /LucidaSansUnicode20 f -(\030\030) 1482 3192 w -10 /LucidaSansUnicode00 f -(Hello) 1546 3192 w -(world,) 1833 3192 w -(or) 2174 3192 w +(\030\030) 1482 3312 w +10 /LucidaSansUnicode00 f +(Hello) 1546 3312 w +(world,) 1833 3312 w +(or) 2174 3312 w 10 /LucidaSansUnicode03 f -(\232\261\273\267\274\255\301\261) 2314 3192 w -(\272\314\303\274\265) 2860 3192 w -10 /LucidaSansUnicode00 f -(,) 3159 3192 w -(or ) 3229 3192 w - save 3370 3192 m +(\232\261\273\267\274\255\301\261) 2314 3312 w +(\272\314\303\274\265) 2860 3312 w +10 /LucidaSansUnicode00 f +(,) 3159 3312 w +(or ) 3229 3312 w + save 3370 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore - save 3475 3192 m + save 3475 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore - save 3580 3192 m + save 3580 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore - save 3685 3192 m + save 3685 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore - save 3790 3192 m + save 3790 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore - save 3902 3192 m + save 3902 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore - save 4007 3192 m + save 4007 3312 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore 10 /LucidaSansUnicode20 f -(\031\031) 4112 3192 w -10 /LucidaSansUnicode00 f -(,) 4176 3192 w -(by) 4246 3192 w -(Rob) 4399 3192 w -(Pike) 4624 3192 w -(and) 4860 3192 w -(Ken Thompson; there is not room for the full story here.) 720 3312 w -(These) 970 3468 w -(issues) 1309 3468 w -(affect) 1660 3468 w -(the) 1984 3468 w -(compiler) 2190 3468 w -(in) 2664 3468 w -(several) 2806 3468 w -(ways.) 3198 3468 w -(First,) 3549 3468 w -(the) 3845 3468 w -(C) 4052 3468 w -(source) 4173 3468 w -(is) 4547 3468 w -(in) 4679 3468 w -(UTF.) 4822 3468 w -(ANSI) 720 3588 w -(says) 991 3588 w -(C) 1245 3588 w -(variables) 1359 3588 w -(are) 1835 3588 w -(formed) 2032 3588 w -(from) 2428 3588 w -(ASCII) 2705 3588 w -(alphanumerics,) 3000 3588 w -(but) 3786 3588 w -(comments) 3992 3588 w -(and) 4540 3588 w -(literal) 4764 3588 w -(strings) 720 3708 w -(may) 1090 3708 w -(contain) 1327 3708 w -(any) 1721 3708 w -(characters) 1927 3708 w -(encoded) 2464 3708 w -(in) 2913 3708 w -(the) 3041 3708 w -(native) 3233 3708 w -(encoding,) 3561 3708 w -(here) 4077 3708 w -(UTF.) 4330 3708 w -(The) 4618 3708 w -(dec\255) 4837 3708 w -(laration) 720 3828 w +(\031\031) 4112 3312 w +10 /LucidaSansUnicode00 f +(,) 4176 3312 w +(by) 4246 3312 w +(Rob) 4399 3312 w +(Pike) 4624 3312 w +(and) 4860 3312 w +(Ken Thompson; there is not room for the full story here.) 720 3432 w +(These) 970 3588 w +(issues) 1309 3588 w +(affect) 1660 3588 w +(the) 1984 3588 w +(compiler) 2190 3588 w +(in) 2664 3588 w +(several) 2806 3588 w +(ways.) 3198 3588 w +(First,) 3549 3588 w +(the) 3845 3588 w +(C) 4052 3588 w +(source) 4173 3588 w +(is) 4547 3588 w +(in) 4679 3588 w +(UTF.) 4822 3588 w +(ANSI) 720 3708 w +(says) 991 3708 w +(C) 1245 3708 w +(variables) 1359 3708 w +(are) 1835 3708 w +(formed) 2032 3708 w +(from) 2428 3708 w +(ASCII) 2705 3708 w +(alphanumerics,) 3000 3708 w +(but) 3786 3708 w +(comments) 3992 3708 w +(and) 4540 3708 w +(literal) 4764 3708 w +(strings) 720 3828 w +(may) 1090 3828 w +(contain) 1327 3828 w +(any) 1721 3828 w +(characters) 1927 3828 w +(encoded) 2464 3828 w +(in) 2913 3828 w +(the) 3041 3828 w +(native) 3233 3828 w +(encoding,) 3561 3828 w +(here) 4077 3828 w +(UTF.) 4330 3828 w +(The) 4618 3828 w +(dec\255) 4837 3828 w +(laration) 720 3948 w 9 /LucidaTypewriter f -(char) 1008 3998 w -(*cp) 1333 3998 w -(=) 1593 3998 w -("abc\377";) 1723 3998 w -10 /LucidaSansUnicode00 f -(initializes) 720 4178 w -(the) 1216 4178 w -(variable) 1404 4178 w -10 /LucidaTypewriter f -(cp) 1817 4178 w -10 /LucidaSansUnicode00 f -(to) 1994 4178 w -(point) 2125 4178 w -(to) 2410 4178 w -(an) 2541 4178 w -(array) 2691 4178 w -(of) 2968 4178 w -(bytes) 3099 4178 w -(holding) 3391 4178 w -(the) 3792 4178 w -(UTF) 3981 4178 w -(representation) 4201 4178 w -(of) 4942 4178 w -(the) 720 4298 w -(characters) 908 4298 w -10 /LucidaTypewriter f -(abc\377.) 1441 4298 w -10 /LucidaSansUnicode00 f -(The) 1834 4298 w -(type) 2048 4298 w -10 /LucidaTypewriter f -(Rune) 2289 4298 w -10 /LucidaSansUnicode00 f -(is) 2610 4298 w -(defined) 2723 4298 w -(in) 3122 4298 w -10 /LucidaTypewriter f -() 3246 4298 w -10 /LucidaSansUnicode00 f -(to) 3639 4298 w -(be) 3770 4298 w -10 /LucidaTypewriter f -(ushort) 3922 4298 w -10 /LucidaSansUnicode00 f -(,) 4354 4298 w -(which is also) 4419 4298 w +(char) 920 4118 w +(*cp) 1245 4118 w +(=) 1505 4118 w +("abc\377";) 1635 4118 w +10 /LucidaSansUnicode00 f +(initializes) 720 4298 w +(the) 1216 4298 w +(variable) 1404 4298 w +10 /LucidaTypewriter f +(cp) 1817 4298 w +10 /LucidaSansUnicode00 f +(to) 1994 4298 w +(point) 2125 4298 w +(to) 2410 4298 w +(an) 2541 4298 w +(array) 2691 4298 w +(of) 2968 4298 w +(bytes) 3099 4298 w +(holding) 3391 4298 w +(the) 3792 4298 w +(UTF) 3981 4298 w +(representation) 4201 4298 w +(of) 4942 4298 w (the) 720 4418 w +(characters) 908 4418 w +10 /LucidaTypewriter f +(abc\377.) 1441 4418 w +10 /LucidaSansUnicode00 f +(The) 1834 4418 w +(type) 2048 4418 w +10 /LucidaTypewriter f +(Rune) 2289 4418 w +10 /LucidaSansUnicode00 f +(is) 2610 4418 w +(defined) 2723 4418 w +(in) 3122 4418 w +10 /LucidaTypewriter f +() 3246 4418 w +10 /LucidaSansUnicode00 f +(to) 3639 4418 w +(be) 3770 4418 w +10 /LucidaTypewriter f +(ushort) 3922 4418 w +10 /LucidaSansUnicode00 f +(,) 4354 4418 w +(which is also) 4419 4418 w +(the) 720 4538 w 10 /LucidaSansUnicode20 f -(\030) 939 4418 w -10 /LucidaSansUnicode00 f -(wide character) 971 4418 w +(\030) 939 4538 w +10 /LucidaSansUnicode00 f +(wide character) 971 4538 w 10 /LucidaSansUnicode20 f -(\031) 1677 4418 w -10 /LucidaSansUnicode00 f -(type in the compiler.) 1741 4418 w -(Therefore the declaration) 2810 4418 w +(\031) 1677 4538 w +10 /LucidaSansUnicode00 f +(type in the compiler.) 1741 4538 w +(Therefore the declaration) 2810 4538 w 9 /LucidaTypewriter f -(Rune) 1008 4588 w -(*rp) 1333 4588 w -(=) 1593 4588 w -(L"abc\377";) 1723 4588 w -10 /LucidaSansUnicode00 f -(initializes) 720 4768 w -(the) 1229 4768 w -(variable) 1430 4768 w -10 /LucidaTypewriter f -(rp) 1856 4768 w -10 /LucidaSansUnicode00 f -(to) 2047 4768 w -(point) 2192 4768 w -(to) 2491 4768 w -(an) 2636 4768 w -(array) 2800 4768 w -(of) 3091 4768 w -(unsigned) 3236 4768 w -(short) 3730 4768 w -(integers) 4029 4768 w -(holding) 4470 4768 w -(the) 4885 4768 w -(16-bit) 720 4888 w -(values) 1073 4888 w -(of) 1418 4888 w -(the) 1555 4888 w -(characters) 1749 4888 w -10 /LucidaTypewriter f -(abc\377) 2288 4888 w -10 /LucidaSansUnicode00 f -(.) 2576 4888 w -(Note) 2679 4888 w -(that) 2946 4888 w -(in) 3176 4888 w -(both) 3306 4888 w -(these) 3568 4888 w -(declarations) 3869 4888 w -(the) 4498 4888 w -(charac\255) 4692 4888 w -(ters) 720 5008 w -(in) 938 5008 w -(the) 1062 5008 w -(source) 1250 5008 w -(that) 1605 5008 w -(represent) 1830 5008 w -10 /LucidaTypewriter f -(abc\377) 2327 5008 w -10 /LucidaSansUnicode00 f -(are) 2649 5008 w -(the) 2835 5008 w -(same;) 3024 5008 w -(what) 3345 5008 w -(changes) 3610 5008 w -(is) 4043 5008 w -(how) 4157 5008 w -(those) 4391 5008 w +(Rune) 920 4708 w +(*rp) 1245 4708 w +(=) 1505 4708 w +(L"abc\377";) 1635 4708 w +10 /LucidaSansUnicode00 f +(initializes) 720 4888 w +(the) 1229 4888 w +(variable) 1430 4888 w +10 /LucidaTypewriter f +(rp) 1856 4888 w +10 /LucidaSansUnicode00 f +(to) 2047 4888 w +(point) 2192 4888 w +(to) 2491 4888 w +(an) 2636 4888 w +(array) 2800 4888 w +(of) 3091 4888 w +(unsigned) 3236 4888 w +(short) 3730 4888 w +(integers) 4029 4888 w +(holding) 4470 4888 w +(the) 4885 4888 w +(16-bit) 720 5008 w +(values) 1073 5008 w +(of) 1418 5008 w +(the) 1555 5008 w +(characters) 1749 5008 w +10 /LucidaTypewriter f +(abc\377) 2288 5008 w +10 /LucidaSansUnicode00 f +(.) 2576 5008 w +(Note) 2679 5008 w +(that) 2946 5008 w +(in) 3176 5008 w +(both) 3306 5008 w +(these) 3568 5008 w +(declarations) 3869 5008 w +(the) 4498 5008 w (charac\255) 4692 5008 w -(ters are represented in memory in the program.) 720 5128 w -(The following two lines:) 3108 5128 w +(ters) 720 5128 w +(in) 938 5128 w +(the) 1062 5128 w +(source) 1250 5128 w +(that) 1605 5128 w +(represent) 1830 5128 w +10 /LucidaTypewriter f +(abc\377) 2327 5128 w +10 /LucidaSansUnicode00 f +(are) 2649 5128 w +(the) 2835 5128 w +(same;) 3024 5128 w +(what) 3345 5128 w +(changes) 3610 5128 w +(is) 4043 5128 w +(how) 4157 5128 w +(those) 4391 5128 w +(charac\255) 4692 5128 w +(ters are represented in memory in the program.) 720 5248 w +(The following two lines:) 3108 5248 w 9 /LucidaTypewriter f -(print\("%s\\n",) 1008 5298 w -("abc\377"\);) 1918 5298 w -(print\("%S\\n",) 1008 5408 w -(L"abc\377"\);) 1918 5408 w -10 /LucidaSansUnicode00 f -(produce) 720 5588 w -(the) 1153 5588 w -(same) 1344 5588 w -(UTF) 1636 5588 w -(string) 1859 5588 w -(on) 2178 5588 w -(their) 2338 5588 w -(output,) 2600 5588 w -(the) 2991 5588 w -(first) 3183 5588 w -(by) 3415 5588 w -(copying) 3567 5588 w -(the) 3984 5588 w -(bytes,) 4176 5588 w -(the) 4504 5588 w -(second) 4696 5588 w -(by converting from runes to bytes.) 720 5708 w -(In) 970 5864 w -(C,) 1103 5864 w -(character) 1247 5864 w -(constants) 1739 5864 w -(are) 2249 5864 w -(integers) 2444 5864 w -(but) 2881 5864 w -(narrowed) 3086 5864 w -(through) 3585 5864 w -(the) 4015 5864 w -10 /LucidaTypewriter f -(char) 4213 5864 w -10 /LucidaSansUnicode00 f -(type.) 4544 5864 w -(The) 4859 5864 w -(Unicode) 720 5984 w -(character) 1146 5984 w -10 /LucidaTypewriter f -(\377) 1630 5984 w -10 /LucidaSansUnicode00 f -(has) 1736 5984 w -(value) 1938 5984 w -(255,) 2226 5984 w -(so) 2481 5984 w -(if) 2627 5984 w -(the) 2727 5984 w -10 /LucidaTypewriter f -(char) 2916 5984 w -10 /LucidaSansUnicode00 f -(type) 3238 5984 w -(is) 3480 5984 w -(signed,) 3594 5984 w -(the) 3983 5984 w -(constant) 4172 5984 w -10 /LucidaTypewriter f -('\377') 4622 5984 w -10 /LucidaSansUnicode00 f -(has) 4872 5984 w -(value) 720 6104 w +(print\("%s\\n",) 920 5418 w +("abc\377"\);) 1830 5418 w +(print\("%S\\n",) 920 5528 w +(L"abc\377"\);) 1830 5528 w +10 /LucidaSansUnicode00 f +(produce) 720 5708 w +(the) 1153 5708 w +(same) 1344 5708 w +(UTF) 1636 5708 w +(string) 1859 5708 w +(on) 2178 5708 w +(their) 2338 5708 w +(output,) 2600 5708 w +(the) 2991 5708 w +(first) 3183 5708 w +(by) 3415 5708 w +(copying) 3567 5708 w +(the) 3984 5708 w +(bytes,) 4176 5708 w +(the) 4504 5708 w +(second) 4696 5708 w +(by converting from runes to bytes.) 720 5828 w +(In) 970 5984 w +(C,) 1103 5984 w +(character) 1247 5984 w +(constants) 1739 5984 w +(are) 2249 5984 w +(integers) 2444 5984 w +(but) 2881 5984 w +(narrowed) 3086 5984 w +(through) 3585 5984 w +(the) 4015 5984 w +10 /LucidaTypewriter f +(char) 4213 5984 w +10 /LucidaSansUnicode00 f +(type.) 4544 5984 w +(The) 4859 5984 w +(Unicode) 720 6104 w +(character) 1146 6104 w +10 /LucidaTypewriter f +(\377) 1630 6104 w +10 /LucidaSansUnicode00 f +(has) 1736 6104 w +(value) 1938 6104 w +(255,) 2226 6104 w +(so) 2481 6104 w +(if) 2627 6104 w +(the) 2727 6104 w +10 /LucidaTypewriter f +(char) 2916 6104 w +10 /LucidaSansUnicode00 f +(type) 3238 6104 w +(is) 3480 6104 w +(signed,) 3594 6104 w +(the) 3983 6104 w +(constant) 4172 6104 w +10 /LucidaTypewriter f +('\377') 4622 6104 w +10 /LucidaSansUnicode00 f +(has) 4872 6104 w +(value) 720 6224 w 10 /LucidaSansUnicode20 f -(\023) 1016 6104 w -10 /LucidaSansUnicode00 f -(1) 1066 6104 w -(\(which) 1172 6104 w -(is) 1529 6104 w -(equal) 1652 6104 w -(to) 1960 6104 w -(EOF\).) 2101 6104 w -(On) 2427 6104 w -(the) 2610 6104 w -(other) 2808 6104 w -(hand,) 3108 6104 w -10 /LucidaTypewriter f -(L'\377') 3425 6104 w -10 /LucidaSansUnicode00 f -(narrows) 3756 6104 w -(through) 4187 6104 w -(the) 4617 6104 w -(wide) 4815 6104 w -(character type,) 720 6224 w -10 /LucidaTypewriter f -(ushort) 1473 6224 w -10 /LucidaSansUnicode00 f -(, and therefore has value 255.) 1905 6224 w -(Finally,) 970 6380 w -(although) 1348 6380 w -(it) 1814 6380 w +(\023) 1016 6224 w +10 /LucidaSansUnicode00 f +(1) 1066 6224 w +(\(which) 1172 6224 w +(is) 1529 6224 w +(equal) 1652 6224 w +(to) 1960 6224 w +(EOF\).) 2101 6224 w +(On) 2427 6224 w +(the) 2610 6224 w +(other) 2808 6224 w +(hand,) 3108 6224 w +10 /LucidaTypewriter f +(L'\377') 3425 6224 w +10 /LucidaSansUnicode00 f +(narrows) 3756 6224 w +(through) 4187 6224 w +(the) 4617 6224 w +(wide) 4815 6224 w +(character type,) 720 6344 w +10 /LucidaTypewriter f +(ushort) 1473 6344 w +10 /LucidaSansUnicode00 f +(, and therefore has value 255.) 1905 6344 w +(Finally,) 970 6500 w +(although) 1348 6500 w +(it) 1814 6500 w 10 /LucidaSansUnicode20 f -(\031) 1880 6380 w -10 /LucidaSansUnicode00 f -(s) 1912 6380 w -(not) 1999 6380 w -(ANSI) 2195 6380 w -(C,) 2457 6380 w -(the) 2594 6380 w -(Plan) 2785 6380 w -(9) 3022 6380 w -(C) 3121 6380 w -(compilers) 3227 6380 w -(assume) 3738 6380 w -(any) 4143 6380 w -(character) 4349 6380 w -(with) 4835 6380 w -(value) 720 6500 w -(above) 1021 6500 w -10 /LucidaTypewriter f -(Runeself) 1355 6500 w -10 /LucidaSansUnicode00 f -(is) 1978 6500 w -(an) 2105 6500 w -(alphanumeric,) 2269 6500 w -(so) 3006 6500 w +(\031) 1880 6500 w +10 /LucidaSansUnicode00 f +(s) 1912 6500 w +(not) 1999 6500 w +(ANSI) 2195 6500 w +(C,) 2457 6500 w +(the) 2594 6500 w +(Plan) 2785 6500 w +(9) 3022 6500 w +(C) 3121 6500 w +(compilers) 3227 6500 w +(assume) 3738 6500 w +(any) 4143 6500 w +(character) 4349 6500 w +(with) 4835 6500 w +(value) 720 6620 w +(above) 1021 6620 w +10 /LucidaTypewriter f +(Runeself) 1355 6620 w +10 /LucidaSansUnicode00 f +(is) 1978 6620 w +(an) 2105 6620 w +(alphanumeric,) 2269 6620 w +(so) 3006 6620 w 10 /LucidaSansUnicode03 f -(\261) 3165 6500 w -10 /LucidaSansUnicode00 f -(is) 3284 6500 w -(a) 3411 6500 w -(legal,) 3513 6500 w -(if) 3822 6500 w -(non-portable,) 3934 6500 w -(variable) 4660 6500 w -(name.) 720 6620 w +(\261) 3165 6620 w +10 /LucidaSansUnicode00 f +(is) 3284 6620 w +(a) 3411 6620 w +(legal,) 3513 6620 w +(if) 3822 6620 w +(non-portable,) 3934 6620 w +(variable) 4660 6620 w +(name.) 720 6740 w cleartomark showpage saveobj restore @@ -8453,127 +8460,128 @@ 10 /LucidaSansUnicode00 f (\(1\)\) that cracks its arguments:) 3583 1596 w 9 /LucidaTypewriter f -(void) 1008 1766 w -(main\(int) 1008 1876 w -(argc,) 1593 1876 w -(char) 1983 1876 w -(*argv[]\)) 2308 1876 w -({) 1008 1986 w -(char) 1528 2096 w -(*defmnt;) 1853 2096 w -(int) 1528 2206 w -(p[2];) 1788 2206 w -(int) 1528 2316 w -(mfd[2];) 1788 2316 w -(int) 1528 2426 w -(stdio) 1788 2426 w -(=) 2178 2426 w -(0;) 2308 2426 w -(defmnt) 1528 2646 w -(=) 1983 2646 w -("/tmp";) 2113 2646 w -(ARGBEGIN{) 1528 2756 w -(case) 1528 2866 w -('i':) 1853 2866 w -(defmnt) 2048 2976 w -(=) 2503 2976 w -(0;) 2633 2976 w -(stdio) 2048 3086 w -(=) 2438 3086 w -(1;) 2568 3086 w -(mfd[0]) 2048 3196 w -(=) 2503 3196 w -(0;) 2633 3196 w -(mfd[1]) 2048 3306 w -(=) 2503 3306 w -(1;) 2633 3306 w -(break;) 2048 3416 w -(case) 1528 3526 w -('s':) 1853 3526 w -(defmnt) 2048 3636 w -(=) 2503 3636 w -(0;) 2633 3636 w -(break;) 2048 3746 w -(case) 1528 3856 w -('m':) 1853 3856 w -(defmnt) 2048 3966 w -(=) 2503 3966 w -(ARGF\(\);) 2633 3966 w -(break;) 2048 4076 w -(default:) 1528 4186 w -(usage\(\);) 2048 4296 w -(}ARGEND) 1528 4406 w +(void) 920 1766 w +(main\(int) 920 1876 w +(argc,) 1505 1876 w +(char) 1895 1876 w +(*argv[]\)) 2220 1876 w +({) 920 1986 w +(char) 1440 2096 w +(*defmnt;) 1765 2096 w +(int) 1440 2206 w +(p[2];) 1700 2206 w +(int) 1440 2316 w +(mfd[2];) 1700 2316 w +(int) 1440 2426 w +(stdio) 1700 2426 w +(=) 2090 2426 w +(0;) 2220 2426 w +(defmnt) 1440 2646 w +(=) 1895 2646 w +("/tmp";) 2025 2646 w +(ARGBEGIN{) 1440 2756 w +(case) 1440 2866 w +('i':) 1765 2866 w +(defmnt) 1960 2976 w +(=) 2415 2976 w +(0;) 2545 2976 w +(stdio) 1960 3086 w +(=) 2350 3086 w +(1;) 2480 3086 w +(mfd[0]) 1960 3196 w +(=) 2415 3196 w +(0;) 2545 3196 w +(mfd[1]) 1960 3306 w +(=) 2415 3306 w +(1;) 2545 3306 w +(break;) 1960 3416 w +(case) 1440 3526 w +('s':) 1765 3526 w +(defmnt) 1960 3636 w +(=) 2415 3636 w +(0;) 2545 3636 w +(break;) 1960 3746 w +(case) 1440 3856 w +('m':) 1765 3856 w +(defmnt) 1960 3966 w +(=) 2415 3966 w +(ARGF\(\);) 2545 3966 w +(break;) 1960 4076 w +(default:) 1440 4186 w +(usage\(\);) 1960 4296 w +(}ARGEND) 1440 4406 w 10 /LucidaSans-Demi f (Extensions) 720 4706 w 10 /LucidaSansUnicode00 f (The) 970 4862 w -(compiler) 1186 4862 w -(has) 1644 4862 w -(several) 1847 4862 w -(extensions) 2222 4862 w -(to) 2783 4862 w -(ANSI) 2917 4862 w -(C,) 3179 4862 w -(all) 3316 4862 w -(of) 3465 4862 w -(which) 3599 4862 w -(are) 3916 4862 w -(used) 4104 4862 w -(extensively) 4372 4862 w -(in) 4949 4862 w -(the) 720 4982 w -(system) 917 4982 w -(source.) 1298 4982 w -(First,) 1725 4982 w +(compiler) 1192 4862 w +(has) 1656 4862 w +(several) 1865 4862 w +(extensions) 2246 4862 w +(to) 2813 4862 w +(1989) 2952 4862 w +(ANSI) 3245 4862 w +(C,) 3512 4862 w +(all) 3654 4862 w +(of) 3808 4862 w +(which) 3947 4862 w +(are) 4269 4862 w +(used) 4462 4862 w +(exten\255) 4735 4862 w +(sively) 720 4982 w +(in the system source.) 1022 4982 w +(Some of these have been adopted in later ANSI C standards.) 2122 4982 w +(First,) 720 5102 w 10 /LucidaSans-Italic f -(structure) 2010 4982 w -(displays) 2499 4982 w -10 /LucidaSansUnicode00 f -(permit) 2934 4982 w -10 /LucidaTypewriter f -(struct) 3294 4982 w -10 /LucidaSansUnicode00 f -(expressions) 3767 4982 w -(to) 4390 4982 w -(be) 4529 4982 w -(formed) 4689 4982 w -(dynamically.) 720 5102 w -(Given these declarations:) 1386 5102 w +(structure) 1006 5102 w +(displays) 1496 5102 w +10 /LucidaSansUnicode00 f +(permit) 1933 5102 w +10 /LucidaTypewriter f +(struct) 2295 5102 w +10 /LucidaSansUnicode00 f +(expressions) 2770 5102 w +(to) 3395 5102 w +(be) 3536 5102 w +(formed) 3698 5102 w +(dynamically.) 4092 5102 w +(Given) 4769 5102 w +(these declarations:) 720 5222 w 9 /LucidaTypewriter f -(typedef) 1008 5272 w -(struct) 1528 5272 w -(Point) 1983 5272 w -(Point;) 2373 5272 w -(typedef) 1008 5382 w -(struct) 1528 5382 w -(Rectangle) 1983 5382 w -(Rectangle;) 2633 5382 w -(struct) 1008 5602 w -(Point) 1463 5602 w -({) 1008 5712 w -(int) 1528 5822 w -(x,) 1788 5822 w -(y;) 1983 5822 w -(};) 1008 5932 w -(struct) 1008 6152 w -(Rectangle) 1463 6152 w -({) 1008 6262 w -(Point) 1528 6372 w -(min,) 1918 6372 w -(max;) 2243 6372 w -(};) 1008 6482 w -(Point) 1008 6702 w -(p,) 1528 6702 w -(q,) 1723 6702 w -(add\(Point,) 1918 6702 w -(Point\);) 2633 6702 w -(Rectangle) 1008 6812 w -(r;) 1658 6812 w -(int) 1008 6922 w -(x,) 1528 6922 w -(y;) 1723 6922 w -10 /LucidaSansUnicode00 f -(this assignment may appear anywhere an assignment is legal:) 720 7102 w +(typedef) 920 5392 w +(struct) 1440 5392 w +(Point) 1895 5392 w +(Point;) 2285 5392 w +(typedef) 920 5502 w +(struct) 1440 5502 w +(Rectangle) 1895 5502 w +(Rectangle;) 2545 5502 w +(struct) 920 5722 w +(Point) 1375 5722 w +({) 920 5832 w +(int) 1440 5942 w +(x,) 1700 5942 w +(y;) 1895 5942 w +(};) 920 6052 w +(struct) 920 6272 w +(Rectangle) 1375 6272 w +({) 920 6382 w +(Point) 1440 6492 w +(min,) 1830 6492 w +(max;) 2155 6492 w +(};) 920 6602 w +(Point) 920 6822 w +(p,) 1440 6822 w +(q,) 1635 6822 w +(add\(Point,) 1830 6822 w +(Point\);) 2545 6822 w +(Rectangle) 920 6932 w +(r;) 1570 6932 w +(int) 920 7042 w +(x,) 1440 7042 w +(y;) 1635 7042 w +10 /LucidaSansUnicode00 f +(this assignment may appear anywhere an assignment is legal:) 720 7222 w cleartomark showpage saveobj restore @@ -8585,12 +8593,12 @@ 10 /LucidaSansUnicode00 f (\255 11 \255) 2752 480 w 9 /LucidaTypewriter f -(r) 1008 830 w -(=) 1138 830 w -(\(Rectangle\){add\(p,) 1268 830 w -(q\),) 2503 830 w -(\(Point\){x,) 2763 830 w -(y+3}};) 3478 830 w +(r) 920 830 w +(=) 1050 830 w +(\(Rectangle\){add\(p,) 1180 830 w +(q\),) 2415 830 w +(\(Point\){x,) 2675 830 w +(y+3}};) 3390 830 w 10 /LucidaSansUnicode00 f (The syntax is the same as for initializing a structure but with a leading cast.) 720 1010 w (If) 970 1166 w @@ -8639,40 +8647,40 @@ (particularly, unions.) 720 1526 w (For example, after these declarations,) 1751 1526 w 9 /LucidaTypewriter f -(struct) 1008 1696 w -(Lock) 1463 1696 w -({) 1008 1806 w -(int) 1528 1916 w -(locked;) 2048 1916 w -(};) 1008 2026 w -(struct) 1008 2246 w -(Node) 1463 2246 w -({) 1008 2356 w -(int) 1528 2466 w -(type;) 2048 2466 w -(union{) 1528 2576 w -(double) 2048 2686 w -(dval;) 2568 2686 w -(double) 2048 2796 w -(fval;) 2568 2796 w -(long) 2048 2906 w -(lval;) 2568 2906 w -(};) 1528 3016 w -(/*) 2568 3016 w -(anonymous) 2763 3016 w -(union) 3413 3016 w -(*/) 3803 3016 w -(struct) 1528 3126 w -(Lock;) 1983 3126 w -(/*) 2568 3126 w -(anonymous) 2763 3126 w -(structure) 3413 3126 w -(*/) 4063 3126 w -(}) 1008 3236 w -(*node;) 1138 3236 w -(void) 1008 3456 w -(lock\(struct) 1528 3456 w -(Lock*\);) 2308 3456 w +(struct) 920 1696 w +(Lock) 1375 1696 w +({) 920 1806 w +(int) 1440 1916 w +(locked;) 1960 1916 w +(};) 920 2026 w +(struct) 920 2246 w +(Node) 1375 2246 w +({) 920 2356 w +(int) 1440 2466 w +(type;) 1960 2466 w +(union{) 1440 2576 w +(double) 1960 2686 w +(dval;) 2480 2686 w +(double) 1960 2796 w +(fval;) 2480 2796 w +(long) 1960 2906 w +(lval;) 2480 2906 w +(};) 1440 3016 w +(/*) 2480 3016 w +(anonymous) 2675 3016 w +(union) 3325 3016 w +(*/) 3715 3016 w +(struct) 1440 3126 w +(Lock;) 1895 3126 w +(/*) 2480 3126 w +(anonymous) 2675 3126 w +(structure) 3325 3126 w +(*/) 3975 3126 w +(}) 920 3236 w +(*node;) 1050 3236 w +(void) 920 3456 w +(lock\(struct) 1440 3456 w +(Lock*\);) 2220 3456 w 10 /LucidaSansUnicode00 f (one) 720 3636 w (may) 952 3636 w @@ -8784,13 +8792,13 @@ 10 /LucidaSansUnicode00 f (, one may declare) 1251 4512 w 9 /LucidaTypewriter f -(struct) 1008 4682 w -({) 1008 4792 w -(int) 1528 4902 w -(type;) 2048 4902 w -(Point;) 1528 5012 w -(}) 1008 5122 w -(p;) 1138 5122 w +(struct) 920 4682 w +({) 920 4792 w +(int) 1440 4902 w +(type;) 1960 4902 w +(Point;) 1440 5012 w +(}) 920 5122 w +(p;) 1050 5122 w 10 /LucidaSansUnicode00 f (and refer to) 720 5302 w 10 /LucidaTypewriter f @@ -8828,18 +8836,18 @@ (of) 4942 5578 w (function pointers indexed by ASCII character,) 720 5698 w 9 /LucidaTypewriter f -(void) 1008 5868 w -(percent\(void\),) 1528 5868 w -(slash\(void\);) 2503 5868 w -(void) 1008 6088 w -(\(*func[128]\)\(void\)) 1528 6088 w -(=) 2763 6088 w -({) 1008 6198 w -(['%']) 1528 6308 w -(percent,) 2048 6308 w -(['/']) 1528 6418 w -(slash,) 2048 6418 w -(};) 1008 6528 w +(void) 920 5868 w +(percent\(void\),) 1440 5868 w +(slash\(void\);) 2415 5868 w +(void) 920 6088 w +(\(*func[128]\)\(void\)) 1440 6088 w +(=) 2675 6088 w +({) 920 6198 w +(['%']) 1440 6308 w +(percent,) 1960 6308 w +(['/']) 1440 6418 w +(slash,) 1960 6418 w +(};) 920 6528 w 10 /LucidaSansUnicode00 f (A similar syntax allows one to initialize structure elements:) 720 6744 w cleartomark @@ -8853,15 +8861,15 @@ 10 /LucidaSansUnicode00 f (\255 12 \255) 2752 480 w 9 /LucidaTypewriter f -(Point) 1008 830 w -(p) 1398 830 w -(=) 1528 830 w -({) 1008 940 w -(.y) 1528 1050 w -(100,) 1723 1050 w -(.x) 1528 1160 w -(200) 1723 1160 w -(};) 1008 1270 w +(Point) 920 830 w +(p) 1310 830 w +(=) 1440 830 w +({) 920 940 w +(.y) 1440 1050 w +(100,) 1635 1050 w +(.x) 1440 1160 w +(200) 1635 1160 w +(};) 920 1270 w 10 /LucidaSansUnicode00 f (These) 720 1450 w (initialization) 1046 1450 w @@ -8882,9 +8890,9 @@ (The Plan 9 compiler accepts either form.) 2954 1570 w (Finally, the declaration) 970 1726 w 9 /LucidaTypewriter f -(extern) 1008 1896 w -(register) 1463 1896 w -(reg;) 2048 1896 w +(extern) 920 1896 w +(register) 1375 1896 w +(reg;) 1960 1896 w 10 /LucidaSansUnicode00 f (\() 720 2076 w 10 /LucidaSans-Italic f @@ -9229,8 +9237,8 @@ (.) 5008 5028 w (The compiler statements) 720 5148 w 9 /LucidaTypewriter f -(SET\(v1\);) 1008 5318 w -(USED\(v2\);) 1008 5428 w +(SET\(v1\);) 920 5318 w +(USED\(v2\);) 920 5428 w 10 /LucidaSansUnicode00 f (decorate) 720 5608 w (the) 1189 5608 w @@ -9356,40 +9364,6 @@ (db) 1970 6964 w 10 /LucidaSansUnicode00 f (.) 2114 6964 w -(Both debuggers support multiple architectures) 970 7120 w -(in) 3270 7120 w -(a) 3394 7120 w -(single) 3482 7120 w -(program;) 3804 7120 w -(that) 4285 7120 w -(is,) 4509 7120 w -(the) 4654 7120 w -(pro\255) 4842 7120 w -(grams) 720 7240 w -(are) 1063 7240 w -10 /LucidaTypewriter f -(db) 1256 7240 w -10 /LucidaSansUnicode00 f -(and) 1441 7240 w -10 /LucidaTypewriter f -(acid) 1662 7240 w -10 /LucidaSansUnicode00 f -(,) 1950 7240 w -(not) 2023 7240 w -(for) 2224 7240 w -(example) 2404 7240 w -10 /LucidaTypewriter f -(vdb) 2858 7240 w -10 /LucidaSansUnicode00 f -(and) 3115 7240 w -10 /LucidaTypewriter f -(vacid) 3336 7240 w -10 /LucidaSansUnicode00 f -(.) 3696 7240 w -(They) 3800 7240 w -(also) 4073 7240 w -(support) 4309 7240 w -(cross-) 4727 7240 w cleartomark showpage saveobj restore @@ -9400,277 +9374,288 @@ 13 pagesetup 10 /LucidaSansUnicode00 f (\255 13 \255) 2752 480 w -(architecture debugging comfortably: one may debug a 68020 binary on a MIPS.) 720 840 w -(Imagine a program has crashed mysteriously:) 970 996 w +(Both debuggers support multiple architectures) 970 840 w +(in) 3270 840 w +(a) 3394 840 w +(single) 3482 840 w +(program;) 3804 840 w +(that) 4285 840 w +(is,) 4509 840 w +(the) 4654 840 w +(pro\255) 4842 840 w +(grams) 720 960 w +(are) 1063 960 w +10 /LucidaTypewriter f +(db) 1256 960 w +10 /LucidaSansUnicode00 f +(and) 1441 960 w +10 /LucidaTypewriter f +(acid) 1662 960 w +10 /LucidaSansUnicode00 f +(,) 1950 960 w +(not) 2023 960 w +(for) 2224 960 w +(example) 2404 960 w +10 /LucidaTypewriter f +(vdb) 2858 960 w +10 /LucidaSansUnicode00 f +(and) 3115 960 w +10 /LucidaTypewriter f +(vacid) 3336 960 w +10 /LucidaSansUnicode00 f +(.) 3696 960 w +(They) 3800 960 w +(also) 4073 960 w +(support) 4309 960 w +(cross-) 4727 960 w +(architecture debugging comfortably: one may debug a 68020 binary on a MIPS.) 720 1080 w +(Imagine a program has crashed mysteriously:) 970 1236 w 9 /LucidaTypewriter f -(%) 1008 1166 w -(X11/X) 1138 1166 w -(Fatal) 1008 1276 w -(server) 1398 1276 w -(bug!) 1853 1276 w -(failed) 1008 1386 w -(to) 1463 1386 w -(create) 1658 1386 w -(default) 2113 1386 w -(stipple) 2633 1386 w -(X) 1008 1496 w -(106:) 1138 1496 w -(suicide:) 1463 1496 w -(sys:) 2048 1496 w -(trap:) 2373 1496 w -(fault) 2763 1496 w -(read) 3153 1496 w -(addr=0x0) 3478 1496 w -(pc=0x00105fb8) 4063 1496 w -(%) 1008 1606 w -10 /LucidaSansUnicode00 f -(When) 720 1786 w -(a) 1030 1786 w -(process) 1129 1786 w -(dies) 1547 1786 w -(on) 1790 1786 w -(Plan) 1957 1786 w -(9) 2202 1786 w -(it) 2309 1786 w -(hangs) 2419 1786 w -(in) 2755 1786 w -(the) 2890 1786 w +(%) 920 1406 w +(X11/X) 1050 1406 w +(Fatal) 920 1516 w +(server) 1310 1516 w +(bug!) 1765 1516 w +(failed) 920 1626 w +(to) 1375 1626 w +(create) 1570 1626 w +(default) 2025 1626 w +(stipple) 2545 1626 w +(X) 920 1736 w +(106:) 1050 1736 w +(suicide:) 1375 1736 w +(sys:) 1960 1736 w +(trap:) 2285 1736 w +(fault) 2675 1736 w +(read) 3065 1736 w +(addr=0x0) 3390 1736 w +(pc=0x00105fb8) 3975 1736 w +(%) 920 1846 w +10 /LucidaSansUnicode00 f +(When) 720 2026 w +(a) 1030 2026 w +(process) 1129 2026 w +(dies) 1547 2026 w +(on) 1790 2026 w +(Plan) 1957 2026 w +(9) 2202 2026 w +(it) 2309 2026 w +(hangs) 2419 2026 w +(in) 2755 2026 w +(the) 2890 2026 w 10 /LucidaSansUnicode20 f -(\030) 3089 1786 w -10 /LucidaSansUnicode00 f -(broken) 3121 1786 w +(\030) 3089 2026 w +10 /LucidaSansUnicode00 f +(broken) 3121 2026 w 10 /LucidaSansUnicode20 f -(\031) 3462 1786 w -10 /LucidaSansUnicode00 f -(state) 3538 1786 w -(for) 3818 1786 w -(debugging.) 4001 1786 w -(Attach) 4630 1786 w -(a) 4985 1786 w -(debugger to the process by naming its process id:) 720 1906 w +(\031) 3462 2026 w +10 /LucidaSansUnicode00 f +(state) 3538 2026 w +(for) 3818 2026 w +(debugging.) 4001 2026 w +(Attach) 4630 2026 w +(a) 4985 2026 w +(debugger to the process by naming its process id:) 720 2146 w 9 /LucidaTypewriter f -(%) 1008 2076 w -(acid) 1138 2076 w -(106) 1463 2076 w -(/proc/106/text:mips) 1008 2186 w -(plan) 2308 2186 w -(9) 2633 2186 w -(executable) 2763 2186 w -(/sys/lib/acid/port) 1008 2406 w -(/sys/lib/acid/mips) 1008 2516 w -(acid:) 1008 2626 w -10 /LucidaSansUnicode00 f -(The) 720 2806 w -10 /LucidaTypewriter f -(acid) 933 2806 w -10 /LucidaSansUnicode00 f -(function) 1253 2806 w -10 /LucidaTypewriter f -(stk\(\)) 1686 2806 w -10 /LucidaSansUnicode00 f -(reports the stack traceback:) 2078 2806 w +(%) 920 2316 w +(acid) 1050 2316 w +(106) 1375 2316 w +(/proc/106/text:mips) 920 2426 w +(plan) 2220 2426 w +(9) 2545 2426 w +(executable) 2675 2426 w +(/sys/lib/acid/port) 920 2646 w +(/sys/lib/acid/mips) 920 2756 w +(acid:) 920 2866 w +10 /LucidaSansUnicode00 f +(The) 720 3046 w +10 /LucidaTypewriter f +(acid) 933 3046 w +10 /LucidaSansUnicode00 f +(function) 1253 3046 w +10 /LucidaTypewriter f +(stk\(\)) 1686 3046 w +10 /LucidaSansUnicode00 f +(reports the stack traceback:) 2078 3046 w 9 /LucidaTypewriter f -(acid:) 1008 2976 w -(stk\(\)) 1398 2976 w -(At) 1008 3086 w -(pc:0x105fb8:abort+0x24) 1203 3086 w -(/sys/src/ape/lib/ap/stdio/abort.c:6) 2698 3086 w -(abort\(\)) 1008 3196 w -(/sys/src/ape/lib/ap/stdio/abort.c:4) 1528 3196 w -(called) 1528 3306 w -(from) 1983 3306 w -(FatalError+#4e) 2308 3306 w -(/sys/src/X/mit/server/dix/misc.c:421) 2048 3416 w -(FatalError\(s9=#e02,) 1008 3526 w -(s8=#4901d200,) 2308 3526 w -(s7=#2,) 3218 3526 w -(s6=#72701,) 3673 3526 w -(s5=#1,) 4388 3526 w -(s4=#7270d,) 1268 3636 w -(s3=#6,) 1983 3636 w -(s2=#12,) 2438 3636 w -(s1=#ff37f1c,) 2958 3636 w -(s0=#6,) 3803 3636 w -(f=#7270f\)) 4258 3636 w -(/sys/src/X/mit/server/dix/misc.c:416) 1268 3746 w -(called) 1528 3856 w -(from) 1983 3856 w -(gnotscreeninit+#4ce) 2308 3856 w -(/sys/src/X/mit/server/ddx/gnot/gnot.c:792) 2048 3966 w -(gnotscreeninit\(snum=#0,) 1008 4076 w -(sc=#80db0\)) 2568 4076 w -(/sys/src/X/mit/server/ddx/gnot/gnot.c:766) 1268 4186 w -(called) 1528 4296 w -(from) 1983 4296 w -(AddScreen+#16e) 2308 4296 w -(/n/bootes/sys/src/X/mit/server/dix/main.c:610) 2048 4406 w -(AddScreen\(pfnInit=0x0000129c,argc=0x00000001,argv=0x7fffffe4\)) 1008 4516 w -(/sys/src/X/mit/server/dix/main.c:530) 1268 4626 w -(called) 1528 4736 w -(from) 1983 4736 w -(InitOutput+0x80) 2308 4736 w -(/sys/src/X/mit/server/ddx/brazil/brddx.c:522) 2048 4846 w -(InitOutput\(argc=0x00000001,argv=0x7fffffe4\)) 1008 4956 w -(/sys/src/X/mit/server/ddx/brazil/brddx.c:511) 1268 5066 w -(called) 1528 5176 w -(from) 1983 5176 w -(main+0x294) 2308 5176 w -(/sys/src/X/mit/server/dix/main.c:225) 2048 5286 w -(main\(argc=0x00000001,argv=0x7fffffe4\)) 1008 5396 w -(/sys/src/X/mit/server/dix/main.c:136) 1268 5506 w -(called) 1528 5616 w -(from) 1983 5616 w -(_main+0x24) 2308 5616 w -(/sys/src/ape/lib/ap/mips/main9.s:8) 2048 5726 w -10 /LucidaSansUnicode00 f -(The) 720 5906 w -(function) 936 5906 w -10 /LucidaTypewriter f -(lstk\(\)) 1372 5906 w -10 /LucidaSansUnicode00 f -(is) 1839 5906 w -(similar) 1954 5906 w -(but) 2316 5906 w -(also) 2513 5906 w -(reports) 2744 5906 w -(the) 3129 5906 w -(values) 3319 5906 w -(of) 3659 5906 w -(local) 3793 5906 w -(variables.) 4054 5906 w -(Note) 4585 5906 w -(that) 4849 5906 w -(the) 720 6026 w -(traceback) 920 6026 w -(includes) 1431 6026 w -(full) 1878 6026 w -(file) 2079 6026 w -(names;) 2274 6026 w -(this) 2667 6026 w -(is) 2890 6026 w -(a) 3014 6026 w -(boon) 3113 6026 w -(to) 3404 6026 w -(debugging,) 3546 6026 w -(although) 4143 6026 w -(it) 4617 6026 w -(makes) 4727 6026 w -(the output much noisier.) 720 6146 w -(To) 970 6302 w -(use) 1127 6302 w -10 /LucidaTypewriter f -(acid) 1329 6302 w -10 /LucidaSansUnicode00 f -(well) 1650 6302 w -(you) 1874 6302 w -(will) 2082 6302 w -(need) 2279 6302 w -(to) 2549 6302 w -(learn) 2680 6302 w -(its) 2956 6302 w -(input) 3106 6302 w -(language;) 3392 6302 w -(see) 3900 6302 w -(the) 4096 6302 w +(acid:) 920 3216 w +(stk\(\)) 1310 3216 w +(At) 920 3326 w +(pc:0x105fb8:abort+0x24) 1115 3326 w +(/sys/src/ape/lib/ap/stdio/abort.c:6) 2610 3326 w +(abort\(\)) 920 3436 w +(/sys/src/ape/lib/ap/stdio/abort.c:4) 1440 3436 w +(called) 1440 3546 w +(from) 1895 3546 w +(FatalError+#4e) 2220 3546 w +(/sys/src/X/mit/server/dix/misc.c:421) 1960 3656 w +(FatalError\(s9=#e02,) 920 3766 w +(s8=#4901d200,) 2220 3766 w +(s7=#2,) 3130 3766 w +(s6=#72701,) 3585 3766 w +(s5=#1,) 4300 3766 w +(s4=#7270d,) 1180 3876 w +(s3=#6,) 1895 3876 w +(s2=#12,) 2350 3876 w +(s1=#ff37f1c,) 2870 3876 w +(s0=#6,) 3715 3876 w +(f=#7270f\)) 4170 3876 w +(/sys/src/X/mit/server/dix/misc.c:416) 1180 3986 w +(called) 1440 4096 w +(from) 1895 4096 w +(gnotscreeninit+#4ce) 2220 4096 w +(/sys/src/X/mit/server/ddx/gnot/gnot.c:792) 1960 4206 w +(gnotscreeninit\(snum=#0,) 920 4316 w +(sc=#80db0\)) 2480 4316 w +(/sys/src/X/mit/server/ddx/gnot/gnot.c:766) 1180 4426 w +(called) 1440 4536 w +(from) 1895 4536 w +(AddScreen+#16e) 2220 4536 w +(/n/bootes/sys/src/X/mit/server/dix/main.c:610) 1960 4646 w +(AddScreen\(pfnInit=0x0000129c,argc=0x00000001,argv=0x7fffffe4\)) 920 4756 w +(/sys/src/X/mit/server/dix/main.c:530) 1180 4866 w +(called) 1440 4976 w +(from) 1895 4976 w +(InitOutput+0x80) 2220 4976 w +(/sys/src/X/mit/server/ddx/brazil/brddx.c:522) 1960 5086 w +(InitOutput\(argc=0x00000001,argv=0x7fffffe4\)) 920 5196 w +(/sys/src/X/mit/server/ddx/brazil/brddx.c:511) 1180 5306 w +(called) 1440 5416 w +(from) 1895 5416 w +(main+0x294) 2220 5416 w +(/sys/src/X/mit/server/dix/main.c:225) 1960 5526 w +(main\(argc=0x00000001,argv=0x7fffffe4\)) 920 5636 w +(/sys/src/X/mit/server/dix/main.c:136) 1180 5746 w +(called) 1440 5856 w +(from) 1895 5856 w +(_main+0x24) 2220 5856 w +(/sys/src/ape/lib/ap/mips/main9.s:8) 1960 5966 w +10 /LucidaSansUnicode00 f +(The) 720 6146 w +(function) 936 6146 w +10 /LucidaTypewriter f +(lstk\(\)) 1372 6146 w +10 /LucidaSansUnicode00 f +(is) 1839 6146 w +(similar) 1954 6146 w +(but) 2316 6146 w +(also) 2513 6146 w +(reports) 2744 6146 w +(the) 3129 6146 w +(values) 3319 6146 w +(of) 3659 6146 w +(local) 3793 6146 w +(variables.) 4054 6146 w +(Note) 4585 6146 w +(that) 4849 6146 w +(the) 720 6266 w +(traceback) 920 6266 w +(includes) 1431 6266 w +(full) 1878 6266 w +(file) 2079 6266 w +(names;) 2274 6266 w +(this) 2667 6266 w +(is) 2890 6266 w +(a) 3014 6266 w +(boon) 3113 6266 w +(to) 3404 6266 w +(debugging,) 3546 6266 w +(although) 4143 6266 w +(it) 4617 6266 w +(makes) 4727 6266 w +(the output much noisier.) 720 6386 w +(To) 970 6542 w +(use) 1127 6542 w +10 /LucidaTypewriter f +(acid) 1329 6542 w +10 /LucidaSansUnicode00 f +(well) 1650 6542 w +(you) 1874 6542 w +(will) 2082 6542 w +(need) 2279 6542 w +(to) 2549 6542 w +(learn) 2680 6542 w +(its) 2956 6542 w +(input) 3106 6542 w +(language;) 3392 6542 w +(see) 3900 6542 w +(the) 4096 6542 w 10 /LucidaSansUnicode20 f -(\030\030) 4285 6302 w -10 /LucidaSansUnicode00 f -(Acid) 4349 6302 w -(Manual) 4595 6302 w +(\030\030) 4285 6542 w +10 /LucidaSansUnicode00 f +(Acid) 4349 6542 w +(Manual) 4595 6542 w 10 /LucidaSansUnicode20 f -(\031\031) 4944 6302 w -10 /LucidaSansUnicode00 f -(,) 5008 6302 w -(by) 720 6422 w -(Phil) 884 6422 w -(Winterbottom,) 1108 6422 w -(for) 1852 6422 w -(details.) 2040 6422 w -(For) 2472 6422 w -(simple) 2676 6422 w -(debugging,) 3045 6422 w -(however,) 3646 6422 w -(the) 4131 6422 w -(information) 4334 6422 w -(in) 4949 6422 w -(the) 720 6542 w -(manual) 919 6542 w -(page) 1319 6542 w -(is) 1599 6542 w -(sufficient.) 1723 6542 w -(In) 2282 6542 w -(particular,) 2418 6542 w -(it) 2958 6542 w -(describes) 3069 6542 w -(the) 3575 6542 w -(most) 3775 6542 w -(useful) 4062 6542 w -(functions) 4404 6542 w -(for) 4901 6542 w -(examining a process.) 720 6662 w -(The) 970 6818 w -(compiler) 1197 6818 w -(does) 1666 6818 w -(not) 1943 6818 w -(place) 2149 6818 w -(information) 2449 6818 w -(describing) 3062 6818 w -(the) 3616 6818 w -(types) 3818 6818 w -(of) 4124 6818 w -(variables) 4269 6818 w -(in) 4747 6818 w -(the) 4885 6818 w -(executable,) 720 6938 w -(but) 1330 6938 w -(a) 1544 6938 w -(compile-time) 1651 6938 w -(flag) 2358 6938 w -(provides) 2593 6938 w -(crude) 3061 6938 w -(support) 3386 6938 w -(for) 3816 6938 w -(symbolic) 4007 6938 w -(debugging.) 4487 6938 w -(The) 720 7058 w -10 /LucidaTypewriter f -(-a) 941 7058 w -10 /LucidaSansUnicode00 f -(flag) 1125 7058 w -(to) 1348 7058 w -(the) 1486 7058 w -(compiler) 1681 7058 w -(suppresses) 2144 7058 w -(code) 2730 7058 w -(generation) 3002 7058 w -(and) 3564 7058 w -(instead) 3785 7058 w -(emits) 4179 7058 w -(source) 4486 7058 w -(text) 4849 7058 w -(in) 720 7178 w -(the) 860 7178 w -10 /LucidaTypewriter f -(acid) 1064 7178 w -10 /LucidaSansUnicode00 f -(language) 1401 7178 w -(to) 1893 7178 w -(format) 2040 7178 w -(and) 2413 7178 w -(display) 2642 7178 w -(data) 3033 7178 w -(structure) 3292 7178 w -(types) 3779 7178 w -(defined) 4086 7178 w -(in) 4500 7178 w -(the) 4639 7178 w -(pro\255) 4842 7178 w -(gram.) 720 7298 w -(The easiest way to use this feature is to put a rule in the) 1067 7298 w -10 /LucidaTypewriter f -(mkfile) 3834 7298 w -10 /LucidaSansUnicode00 f -(:) 4266 7298 w +(\031\031) 4944 6542 w +10 /LucidaSansUnicode00 f +(,) 5008 6542 w +(by) 720 6662 w +(Phil) 884 6662 w +(Winterbottom,) 1108 6662 w +(for) 1852 6662 w +(details.) 2040 6662 w +(For) 2472 6662 w +(simple) 2676 6662 w +(debugging,) 3045 6662 w +(however,) 3646 6662 w +(the) 4131 6662 w +(information) 4334 6662 w +(in) 4949 6662 w +(the) 720 6782 w +(manual) 919 6782 w +(page) 1319 6782 w +(is) 1599 6782 w +(sufficient.) 1723 6782 w +(In) 2282 6782 w +(particular,) 2418 6782 w +(it) 2958 6782 w +(describes) 3069 6782 w +(the) 3575 6782 w +(most) 3775 6782 w +(useful) 4062 6782 w +(functions) 4404 6782 w +(for) 4901 6782 w +(examining a process.) 720 6902 w +(The) 970 7058 w +(compiler) 1197 7058 w +(does) 1666 7058 w +(not) 1943 7058 w +(place) 2149 7058 w +(information) 2449 7058 w +(describing) 3062 7058 w +(the) 3616 7058 w +(types) 3818 7058 w +(of) 4124 7058 w +(variables) 4269 7058 w +(in) 4747 7058 w +(the) 4885 7058 w +(executable,) 720 7178 w +(but) 1330 7178 w +(a) 1544 7178 w +(compile-time) 1651 7178 w +(flag) 2358 7178 w +(provides) 2593 7178 w +(crude) 3061 7178 w +(support) 3386 7178 w +(for) 3816 7178 w +(symbolic) 4007 7178 w +(debugging.) 4487 7178 w +(The) 720 7298 w +10 /LucidaTypewriter f +(-a) 941 7298 w +10 /LucidaSansUnicode00 f +(flag) 1125 7298 w +(to) 1348 7298 w +(the) 1486 7298 w +(compiler) 1681 7298 w +(suppresses) 2144 7298 w +(code) 2730 7298 w +(generation) 3002 7298 w +(and) 3564 7298 w +(instead) 3785 7298 w +(emits) 4179 7298 w +(source) 4486 7298 w +(text) 4849 7298 w cleartomark showpage saveobj restore @@ -9681,248 +9666,271 @@ 14 pagesetup 10 /LucidaSansUnicode00 f (\255 14 \255) 2752 480 w +(in) 720 840 w +(the) 860 840 w +10 /LucidaTypewriter f +(acid) 1064 840 w +10 /LucidaSansUnicode00 f +(language) 1401 840 w +(to) 1893 840 w +(format) 2040 840 w +(and) 2413 840 w +(display) 2642 840 w +(data) 3033 840 w +(structure) 3292 840 w +(types) 3779 840 w +(defined) 4086 840 w +(in) 4500 840 w +(the) 4639 840 w +(pro\255) 4842 840 w +(gram.) 720 960 w +(The easiest way to use this feature is to put a rule in the) 1067 960 w +10 /LucidaTypewriter f +(mkfile) 3834 960 w +10 /LucidaSansUnicode00 f +(:) 4266 960 w 9 /LucidaTypewriter f -(syms:) 1008 830 w -(main.$O) 1528 830 w -($CC) 1528 940 w -(-a) 1788 940 w -(main.c) 1983 940 w -(>) 2438 940 w -(syms) 2568 940 w -10 /LucidaSansUnicode00 f -(Then from within) 720 1120 w -10 /LucidaTypewriter f -(acid) 1587 1120 w -10 /LucidaSansUnicode00 f -(,) 1875 1120 w +(syms:) 920 1130 w +(main.$O) 1440 1130 w +($CC) 1440 1240 w +(-a) 1700 1240 w +(main.c) 1895 1240 w +(>) 2350 1240 w +(syms) 2480 1240 w +10 /LucidaSansUnicode00 f +(Then from within) 720 1420 w +10 /LucidaTypewriter f +(acid) 1587 1420 w +10 /LucidaSansUnicode00 f +(,) 1875 1420 w 9 /LucidaTypewriter f -(acid:) 1008 1290 w -(include\("sourcedirectory/syms"\)) 1398 1290 w -10 /LucidaSansUnicode00 f -(to) 720 1470 w -(read) 853 1470 w -(in) 1103 1470 w -(the) 1229 1470 w -(relevant) 1419 1470 w -(definitions.) 1842 1470 w -(\(For) 2457 1470 w -(multi-file) 2681 1470 w -(source,) 3175 1470 w -(you) 3564 1470 w -(need) 3774 1470 w -(to) 4046 1470 w -(be) 4179 1470 w -(a) 4333 1470 w -(little) 4424 1470 w -(fancier;) 4677 1470 w -(see) 720 1590 w +(acid:) 920 1590 w +(include\("sourcedirectory/syms"\)) 1310 1590 w +10 /LucidaSansUnicode00 f +(to) 720 1770 w +(read) 853 1770 w +(in) 1103 1770 w +(the) 1229 1770 w +(relevant) 1419 1770 w +(definitions.) 1842 1770 w +(\(For) 2457 1770 w +(multi-file) 2681 1770 w +(source,) 3175 1770 w +(you) 3564 1770 w +(need) 3774 1770 w +(to) 4046 1770 w +(be) 4179 1770 w +(a) 4333 1770 w +(little) 4424 1770 w +(fancier;) 4677 1770 w +(see) 720 1890 w 10 /LucidaSans-Italic f -(2c) 933 1590 w -10 /LucidaSansUnicode00 f -(\(1\)\).) 1046 1590 w -(This) 1322 1590 w -(text) 1577 1590 w -(includes,) 1818 1590 w -(for) 2303 1590 w -(each) 2492 1590 w -(defined) 2766 1590 w -(compound) 3182 1590 w -(type,) 3748 1590 w -(a) 4038 1590 w -(function) 4143 1590 w -(with) 4594 1590 w -(that) 4849 1590 w -(name) 720 1710 w -(that) 1025 1710 w -(may) 1255 1710 w -(be) 1494 1710 w -(called) 1652 1710 w -(with) 1974 1710 w -(the) 2218 1710 w -(address) 2412 1710 w -(of) 2831 1710 w -(a) 2968 1710 w -(structure) 3062 1710 w -(of) 3539 1710 w -(that) 3677 1710 w -(type) 3908 1710 w -(to) 4156 1710 w -(display) 4294 1710 w -(its) 4676 1710 w -(con\255) 4833 1710 w -(tents.) 720 1830 w -(For example, if) 1059 1830 w -10 /LucidaTypewriter f -(rect) 1822 1830 w -10 /LucidaSansUnicode00 f -(is a global variable of type) 2142 1830 w -10 /LucidaTypewriter f -(Rectangle) 3454 1830 w -10 /LucidaSansUnicode00 f -(, one may execute) 4102 1830 w +(2c) 933 1890 w +10 /LucidaSansUnicode00 f +(\(1\)\).) 1046 1890 w +(This) 1322 1890 w +(text) 1577 1890 w +(includes,) 1818 1890 w +(for) 2303 1890 w +(each) 2492 1890 w +(defined) 2766 1890 w +(compound) 3182 1890 w +(type,) 3748 1890 w +(a) 4038 1890 w +(function) 4143 1890 w +(with) 4594 1890 w +(that) 4849 1890 w +(name) 720 2010 w +(that) 1025 2010 w +(may) 1255 2010 w +(be) 1494 2010 w +(called) 1652 2010 w +(with) 1974 2010 w +(the) 2218 2010 w +(address) 2412 2010 w +(of) 2831 2010 w +(a) 2968 2010 w +(structure) 3062 2010 w +(of) 3539 2010 w +(that) 3677 2010 w +(type) 3908 2010 w +(to) 4156 2010 w +(display) 4294 2010 w +(its) 4676 2010 w +(con\255) 4833 2010 w +(tents.) 720 2130 w +(For example, if) 1059 2130 w +10 /LucidaTypewriter f +(rect) 1822 2130 w +10 /LucidaSansUnicode00 f +(is a global variable of type) 2142 2130 w +10 /LucidaTypewriter f +(Rectangle) 3454 2130 w +10 /LucidaSansUnicode00 f +(, one may execute) 4102 2130 w 9 /LucidaTypewriter f -(Rectangle\(*rect\)) 1008 2000 w -10 /LucidaSansUnicode00 f -(to) 720 2180 w -(display) 853 2180 w -(it.) 1230 2180 w -(The) 1396 2180 w -10 /LucidaTypewriter f -(*) 1613 2180 w -10 /LucidaSansUnicode00 f -(\(indirection\)) 1721 2180 w -(operator) 2343 2180 w -(is) 2794 2180 w -(necessary) 2910 2180 w -(because) 3421 2180 w -(of) 3851 2180 w -(the) 3985 2180 w -(way) 4176 2180 w -10 /LucidaTypewriter f -(acid) 4396 2180 w -10 /LucidaSansUnicode00 f -(works:) 4720 2180 w -(each) 720 2300 w -(global) 978 2300 w -(symbol) 1311 2300 w -(in) 1694 2300 w -(the) 1819 2300 w -(program) 2008 2300 w -(is) 2458 2300 w -(defined) 2572 2300 w -(as) 2972 2300 w -(a) 3112 2300 w -(variable) 3201 2300 w -(by) 3615 2300 w -10 /LucidaTypewriter f -(acid) 3764 2300 w -10 /LucidaSansUnicode00 f -(,) 4052 2300 w -(with) 4118 2300 w -(value) 4357 2300 w -(equal) 4644 2300 w -(to) 4942 2300 w -(the) 720 2420 w +(Rectangle\(*rect\)) 920 2300 w +10 /LucidaSansUnicode00 f +(to) 720 2480 w +(display) 853 2480 w +(it.) 1230 2480 w +(The) 1396 2480 w +10 /LucidaTypewriter f +(*) 1613 2480 w +10 /LucidaSansUnicode00 f +(\(indirection\)) 1721 2480 w +(operator) 2343 2480 w +(is) 2794 2480 w +(necessary) 2910 2480 w +(because) 3421 2480 w +(of) 3851 2480 w +(the) 3985 2480 w +(way) 4176 2480 w +10 /LucidaTypewriter f +(acid) 4396 2480 w +10 /LucidaSansUnicode00 f +(works:) 4720 2480 w +(each) 720 2600 w +(global) 978 2600 w +(symbol) 1311 2600 w +(in) 1694 2600 w +(the) 1819 2600 w +(program) 2008 2600 w +(is) 2458 2600 w +(defined) 2572 2600 w +(as) 2972 2600 w +(a) 3112 2600 w +(variable) 3201 2600 w +(by) 3615 2600 w +10 /LucidaTypewriter f +(acid) 3764 2600 w +10 /LucidaSansUnicode00 f +(,) 4052 2600 w +(with) 4118 2600 w +(value) 4357 2600 w +(equal) 4644 2600 w +(to) 4942 2600 w +(the) 720 2720 w 10 /LucidaSans-Italic f -(address) 907 2420 w -10 /LucidaSansUnicode00 f -(of the symbol.) 1321 2420 w -(Another) 970 2576 w -(common) 1397 2576 w -(technique) 1857 2576 w -(is) 2374 2576 w -(to) 2493 2576 w -(write) 2630 2576 w -(by) 2909 2576 w -(hand) 3063 2576 w -(special) 3344 2576 w -10 /LucidaTypewriter f -(acid) 3717 2576 w -10 /LucidaSansUnicode00 f -(code) 4044 2576 w -(to) 4314 2576 w -(define) 4452 2576 w -(func\255) 4795 2576 w -(tions) 720 2696 w -(to) 1021 2696 w -(aid) 1180 2696 w -(debugging,) 1388 2696 w -(initialize) 2002 2696 w -(the) 2475 2696 w -(debugger,) 2691 2696 w -(and) 3249 2696 w -(so) 3490 2696 w -(on.) 3663 2696 w -(Conventionally,) 3911 2696 w -(this) 4720 2696 w -(is) 4960 2696 w -(placed in a file called) 720 2816 w -10 /LucidaTypewriter f -(acid) 1777 2816 w -10 /LucidaSansUnicode00 f -(in the source directory; it has a line) 2097 2816 w +(address) 907 2720 w +10 /LucidaSansUnicode00 f +(of the symbol.) 1321 2720 w +(Another) 970 2876 w +(common) 1397 2876 w +(technique) 1857 2876 w +(is) 2374 2876 w +(to) 2493 2876 w +(write) 2630 2876 w +(by) 2909 2876 w +(hand) 3063 2876 w +(special) 3344 2876 w +10 /LucidaTypewriter f +(acid) 3717 2876 w +10 /LucidaSansUnicode00 f +(code) 4044 2876 w +(to) 4314 2876 w +(define) 4452 2876 w +(func\255) 4795 2876 w +(tions) 720 2996 w +(to) 1021 2996 w +(aid) 1180 2996 w +(debugging,) 1388 2996 w +(initialize) 2002 2996 w +(the) 2475 2996 w +(debugger,) 2691 2996 w +(and) 3249 2996 w +(so) 3490 2996 w +(on.) 3663 2996 w +(Conventionally,) 3911 2996 w +(this) 4720 2996 w +(is) 4960 2996 w +(placed in a file called) 720 3116 w +10 /LucidaTypewriter f +(acid) 1777 3116 w +10 /LucidaSansUnicode00 f +(in the source directory; it has a line) 2097 3116 w 9 /LucidaTypewriter f -(include\("sourcedirectory/syms"\);) 1008 2986 w -10 /LucidaSansUnicode00 f -(to) 720 3166 w -(load) 855 3166 w -(the) 1100 3166 w -(compiler-produced) 1292 3166 w -(symbols.) 2271 3166 w -(One) 2773 3166 w -(may) 3007 3166 w -(edit) 3245 3166 w -(the) 3468 3166 w -(compiler) 3661 3166 w -(output) 4122 3166 w -(directly) 4482 3166 w -(but) 4878 3166 w -(it is wiser to keep the hand-generated) 720 3286 w -10 /LucidaTypewriter f -(acid) 2618 3286 w -10 /LucidaSansUnicode00 f -(separate from the machine-generated.) 2938 3286 w -(To make things simple, the default rules) 970 3442 w -(in) 2970 3442 w -(the) 3094 3442 w -(system) 3282 3442 w -10 /LucidaTypewriter f -(mkfiles) 3655 3442 w -10 /LucidaSansUnicode00 f -(include) 4192 3442 w -(entries) 4577 3442 w -(to) 4942 3442 w -(make) 720 3562 w -10 /LucidaTypewriter f -(foo.acid) 1038 3562 w -10 /LucidaSansUnicode00 f -(from) 1670 3562 w -10 /LucidaTypewriter f -(foo.c) 1957 3562 w -10 /LucidaSansUnicode00 f -(,) 2317 3562 w -(so) 2404 3562 w -(one) 2571 3562 w -(may) 2805 3562 w -(use) 3060 3562 w -10 /LucidaTypewriter f -(mk) 3284 3562 w -10 /LucidaSansUnicode00 f -(to) 3483 3562 w -(automate) 3636 3562 w -(the) 4147 3562 w -(production) 4357 3562 w -(of) 4942 3562 w -10 /LucidaTypewriter f -(acid) 720 3682 w -10 /LucidaSansUnicode00 f -(definitions for a given C source file.) 1040 3682 w -(There) 970 3838 w -(is) 1282 3838 w -(much) 1396 3838 w -(more) 1698 3838 w -(to) 1983 3838 w -(say) 2115 3838 w -(here.) 2307 3838 w -(See) 2620 3838 w -10 /LucidaTypewriter f -(acid) 2820 3838 w -10 /LucidaSansUnicode00 f -(manual) 3142 3838 w -(page,) 3532 3838 w -(the) 3834 3838 w -(reference) 4024 3838 w -(manual,) 4515 3838 w -(or) 4938 3838 w -(the paper ) 720 3958 w +(include\("sourcedirectory/syms"\);) 920 3286 w +10 /LucidaSansUnicode00 f +(to) 720 3466 w +(load) 855 3466 w +(the) 1100 3466 w +(compiler-produced) 1292 3466 w +(symbols.) 2271 3466 w +(One) 2773 3466 w +(may) 3007 3466 w +(edit) 3245 3466 w +(the) 3468 3466 w +(compiler) 3661 3466 w +(output) 4122 3466 w +(directly) 4482 3466 w +(but) 4878 3466 w +(it is wiser to keep the hand-generated) 720 3586 w +10 /LucidaTypewriter f +(acid) 2618 3586 w +10 /LucidaSansUnicode00 f +(separate from the machine-generated.) 2938 3586 w +(To make things simple, the default rules) 970 3742 w +(in) 2970 3742 w +(the) 3094 3742 w +(system) 3282 3742 w +10 /LucidaTypewriter f +(mkfiles) 3655 3742 w +10 /LucidaSansUnicode00 f +(include) 4192 3742 w +(entries) 4577 3742 w +(to) 4942 3742 w +(make) 720 3862 w +10 /LucidaTypewriter f +(foo.acid) 1038 3862 w +10 /LucidaSansUnicode00 f +(from) 1670 3862 w +10 /LucidaTypewriter f +(foo.c) 1957 3862 w +10 /LucidaSansUnicode00 f +(,) 2317 3862 w +(so) 2404 3862 w +(one) 2571 3862 w +(may) 2805 3862 w +(use) 3060 3862 w +10 /LucidaTypewriter f +(mk) 3284 3862 w +10 /LucidaSansUnicode00 f +(to) 3483 3862 w +(automate) 3636 3862 w +(the) 4147 3862 w +(production) 4357 3862 w +(of) 4942 3862 w +10 /LucidaTypewriter f +(acid) 720 3982 w +10 /LucidaSansUnicode00 f +(definitions for a given C source file.) 1040 3982 w +(There) 970 4138 w +(is) 1282 4138 w +(much) 1396 4138 w +(more) 1698 4138 w +(to) 1983 4138 w +(say) 2115 4138 w +(here.) 2307 4138 w +(See) 2620 4138 w +10 /LucidaTypewriter f +(acid) 2820 4138 w +10 /LucidaSansUnicode00 f +(manual) 3142 4138 w +(page,) 3532 4138 w +(the) 3834 4138 w +(reference) 4024 4138 w +(manual,) 4515 4138 w +(or) 4938 4138 w +(the paper ) 720 4258 w 10 /LucidaSansUnicode20 f -(\030\030) 1217 3958 w -10 /LucidaSansUnicode00 f -(Acid: A Debugger Built From A Language) 1281 3958 w +(\030\030) 1217 4258 w +10 /LucidaSansUnicode00 f +(Acid: A Debugger Built From A Language) 1281 4258 w 10 /LucidaSansUnicode20 f -(\031\031) 3263 3958 w -10 /LucidaSansUnicode00 f -(, also by Phil Winterbottom.) 3327 3958 w +(\031\031) 3263 4258 w +10 /LucidaSansUnicode00 f +(, also by Phil Winterbottom.) 3327 4258 w cleartomark showpage saveobj restore diff -r 973230ca515f -r dbb1bddf6759 sys/doc/compiler.ms --- a/sys/doc/compiler.ms Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/doc/compiler.ms Tue Mar 06 23:32:10 2012 +0100 @@ -22,10 +22,14 @@ Introduction .LP There are many compilers in the series. -Six of the compilers (MIPS 3000, SPARC, Intel 386, Power PC, DEC Alpha, and Motorola 68020) +Five of the compilers (Intel 386, AMD64, PowerPC, PowerPC 64-bit, ARM) are considered active and are used to compile current versions of Plan 9. -Several others (Motorola 68000, Intel 960, ARM 7500, AMD 29000) have had only limited use, such as +Four of the compilers (MIPS 3000, SPARC, DEC Alpha, and Motorola 68020) +are maintained but are for older machines +for which we have no current ports of Plan 9; +other than the MIPS, we are unlikely to port to any such machines. +Several others (Motorola 68000, Intel 960, AMD 29000) have had only limited use, such as to program peripherals or experimental devices. .NH Structure @@ -54,15 +58,16 @@ \\$1 \f(CW\\$2\fP \f(CW\\$3\fP \f(CW\\$4\fP .. .Ta SPARC kc kl ka -.Ta Power\ PC qc ql qa +.Ta PowerPC qc ql qa .Ta MIPS vc vl va +.Ta MIPS\ little-endian 0c 0l 0a .Ta Motorola\ 68000 1c 1l 1a .Ta Motorola\ 68020 2c 2l 2a -.Ta ARM\ 7500 5c 5l 5a -.Ta Intel\ 960 6c 6l 6a +.Ta ARM 5c 5l 5a +.Ta AMD64 6c 6l 6a .Ta DEC\ Alpha 7c 7l 7a .Ta Intel\ 386 8c 8l 8a -.Ta AMD\ 29000 9c 9l 9a +.Ta PowerPC\ 64-bit 9c 9l 9a .DE There is a further breakdown in the source of the compilers into @@ -323,14 +328,14 @@ The loader uses the library name to find libraries to load. If the name contains -.CW %O , +.CW $O , it is replaced with the single character object type of the compiler (e.g., .CW v for the MIPS). If the name contains -.CW %M , +.CW $M , it is replaced with the architecture type for the compiler (e.g., @@ -343,7 +348,7 @@ .CW . then it is searched for in the loader's current directory. Otherwise, the name is searched from -.CW /%M/lib . +.CW /$M/lib . Such .CW #pragma statements in header files guarantee that the correct @@ -352,7 +357,7 @@ .LP They also accept .CW #pragma -.CW hjdicks +.CW packed .CW on (or .CW yes @@ -360,7 +365,7 @@ .CW 1 ) to cause subsequently declared data, until .CW #pragma -.CW hjdicks +.CW packed .CW off (or .CW no diff -r 973230ca515f -r dbb1bddf6759 sys/doc/compiler.ps --- a/sys/doc/compiler.ps Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/doc/compiler.ps Tue Mar 06 23:32:10 2012 +0100 @@ -3129,6 +3129,7 @@ %%EndResource %!PS-Adobe-2.0 %%Version: 0.1 +%%Creator: troff, Plan 9 edition %%Pages: (atend) %%EndComments % @@ -3706,277 +3707,292 @@ (Introduction) 873 2890 w 10 /LucidaSansUnicode00 f (There) 720 3046 w -(are) 1040 3046 w -(many) 1234 3046 w -(compilers) 1538 3046 w -(in) 2054 3046 w -(the) 2187 3046 w -(series.) 2384 3046 w -(Six) 2774 3046 w -(of) 2960 3046 w -(the) 3100 3046 w -(compilers) 3298 3046 w -(\(MIPS) 3815 3046 w -(3000,) 4115 3046 w -(SPARC,) 4442 3046 w -(Intel) 4827 3046 w -(386,) 720 3166 w -(Power) 981 3166 w -(PC,) 1311 3166 w -(DEC) 1507 3166 w -(Alpha,) 1745 3166 w -(and) 2095 3166 w -(Motorola) 2315 3166 w -(68020\)) 2786 3166 w -(are) 3174 3166 w -(considered) 3366 3166 w -(active) 3939 3166 w -(and) 4259 3166 w -(are) 4479 3166 w -(used) 4671 3166 w -(to) 4942 3166 w -(compile) 720 3286 w -(current) 1155 3286 w -(versions) 1558 3286 w -(of) 2014 3286 w -(Plan) 2166 3286 w -(9.) 2421 3286 w -(Several) 2602 3286 w -(others) 2999 3286 w -(\(Motorola) 3361 3286 w -(68000,) 3879 3286 w -(Intel) 4280 3286 w -(960,) 4547 3286 w -(ARM) 4822 3286 w -(7500,) 720 3406 w -(AMD) 1039 3406 w -(29000\)) 1304 3406 w -(have) 1687 3406 w -(had) 1946 3406 w -(only) 2160 3406 w -(limited) 2398 3406 w -(use,) 2768 3406 w -(such) 3003 3406 w -(as) 3263 3406 w -(to) 3403 3406 w -(program) 3535 3406 w -(peripherals) 3985 3406 w -(or) 4565 3406 w -(experi\255) 4701 3406 w -(mental devices.) 720 3526 w +(are) 1038 3046 w +(many) 1230 3046 w +(compilers) 1532 3046 w +(in) 2046 3046 w +(the) 2177 3046 w +(series.) 2372 3046 w +(Five) 2760 3046 w +(of) 2991 3046 w +(the) 3129 3046 w +(compilers) 3324 3046 w +(\(Intel) 3838 3046 w +(386,) 4124 3046 w +(AMD64,) 4385 3046 w +(Pow\255) 4814 3046 w +(erPC,) 720 3166 w +(PowerPC) 1013 3166 w +(64-bit,) 1467 3166 w +(ARM\)) 1852 3166 w +(are) 2143 3166 w +(considered) 2335 3166 w +(active) 2908 3166 w +(and) 3228 3166 w +(are) 3448 3166 w +(used) 3640 3166 w +(to) 3911 3166 w +(compile) 4048 3166 w +(current) 4469 3166 w +(ver\255) 4858 3166 w +(sions) 720 3286 w +(of) 1023 3286 w +(Plan) 1170 3286 w +(9.) 1420 3286 w +(Four) 1596 3286 w +(of) 1863 3286 w +(the) 2010 3286 w +(compilers) 2214 3286 w +(\(MIPS) 2738 3286 w +(3000,) 3045 3286 w +(SPARC,) 3379 3286 w +(DEC) 3771 3286 w +(Alpha,) 4019 3286 w +(and) 4379 3286 w +(Motorola) 4609 3286 w +(68020\)) 720 3406 w +(are) 1103 3406 w +(maintained) 1290 3406 w +(but) 1866 3406 w +(are) 2063 3406 w +(for) 2250 3406 w +(older) 2423 3406 w +(machines) 2707 3406 w +(for) 3200 3406 w +(which) 3373 3406 w +(we) 3688 3406 w +(have) 3855 3406 w +(no) 4114 3406 w +(current) 4271 3406 w +(ports) 4655 3406 w +(of) 4942 3406 w +(Plan) 720 3526 w +(9;) 960 3526 w +(other) 1094 3526 w +(than) 1390 3526 w +(the) 1645 3526 w +(MIPS,) 1839 3526 w +(we) 2134 3526 w +(are) 2306 3526 w +(unlikely) 2497 3526 w +(to) 2913 3526 w +(port) 3050 3526 w +(to) 3291 3526 w +(any) 3428 3526 w +(such) 3636 3526 w +(machines.) 3901 3526 w +(Several) 4464 3526 w +(oth\255) 4847 3526 w +(ers) 720 3646 w +(\(Motorola) 907 3646 w +(68000,) 1410 3646 w +(Intel) 1796 3646 w +(960,) 2048 3646 w +(AMD) 2308 3646 w +(29000\)) 2576 3646 w +(have) 2962 3646 w +(had) 3225 3646 w +(only) 3443 3646 w +(limited) 3685 3646 w +(use,) 4059 3646 w +(such) 4298 3646 w +(as) 4562 3646 w +(to) 4706 3646 w +(pro\255) 4842 3646 w +(gram peripherals or experimental devices.) 720 3766 w 10 /LucidaSans-Demi f -(2.) 720 3766 w -(Structure) 873 3766 w -10 /LucidaSansUnicode00 f -(The) 720 3922 w -(compiler) 945 3922 w -(is) 1412 3922 w -(a) 1536 3922 w -(single) 1636 3922 w -(program) 1970 3922 w -(that) 2431 3922 w -(produces) 2667 3922 w -(an) 3160 3922 w -(object) 3322 3922 w -(file.) 3665 3922 w -(Combined) 3925 3922 w -(in) 4466 3922 w -(the) 4602 3922 w -(com\255) 4802 3922 w -(piler) 720 4042 w -(are) 981 4042 w -(the) 1176 4042 w -(traditional) 1374 4042 w -(roles) 1915 4042 w -(of) 2196 4042 w -(preprocessor,) 2337 4042 w -(lexical) 3048 4042 w -(analyzer,) 3401 4042 w -(parser,) 3883 4042 w -(code) 4264 4042 w -(generator,) 4537 4042 w -(local) 720 4162 w -(optimizer,) 995 4162 w -(and) 1543 4162 w -(first) 1773 4162 w -(half) 2019 4162 w -(of) 2253 4162 w -(the) 2402 4162 w -(assembler.) 2608 4162 w -(The) 3218 4162 w -(object) 3450 4162 w -(files) 3799 4162 w -(are) 4052 4162 w -(binary) 4255 4162 w -(forms) 4608 4162 w -(of) 4942 4162 w -(assembly) 720 4282 w -(language,) 1230 4282 w -(similar) 1765 4282 w -(to) 2152 4282 w -(what) 2310 4282 w -(might) 2601 4282 w -(be) 2944 4282 w -(passed) 3123 4282 w -(between) 3522 4282 w -(the) 3989 4282 w -(first) 4203 4282 w -(and) 4457 4282 w -(second) 4696 4282 w -(passes of an assembler.) 720 4402 w -(Object) 720 4558 w -(files) 1075 4558 w -(and) 1318 4558 w -(libraries) 1539 4558 w -(are) 1974 4558 w -(combined) 2167 4558 w -(by) 2686 4558 w -(a) 2842 4558 w -(loader) 2938 4558 w -(program) 3284 4558 w -(to) 3741 4558 w -(produce) 3880 4558 w -(the) 4318 4558 w -(executable) 4514 4558 w -(binary.) 720 4678 w -(The) 1139 4678 w -(loader) 1373 4678 w -(combines) 1731 4678 w -(the) 2250 4678 w -(roles) 2458 4678 w -(of) 2749 4678 w -(second) 2899 4678 w -(half) 3295 4678 w -(of) 3530 4678 w -(the) 3680 4678 w -(assembler,) 3887 4678 w -(global) 4466 4678 w -(opti\255) 4817 4678 w -(mizer, and loader.) 720 4798 w -(The names of the compliers, loaders, and assemblers are as follows:) 1673 4798 w -(SPARC) 1080 4978 w -10 /LucidaTypewriter f -(kc) 2160 4978 w -(kl) 2368 4978 w -(ka) 2576 4978 w -10 /LucidaSansUnicode00 f -(Power PC) 1080 5098 w -10 /LucidaTypewriter f -(qc) 2160 5098 w -(ql) 2368 5098 w -(qa) 2576 5098 w -10 /LucidaSansUnicode00 f -(MIPS) 1080 5218 w -10 /LucidaTypewriter f -(vc) 2160 5218 w -(vl) 2368 5218 w -(va) 2576 5218 w -10 /LucidaSansUnicode00 f -(Motorola 68000) 1080 5338 w -10 /LucidaTypewriter f -(1c) 2160 5338 w -(1l) 2368 5338 w -(1a) 2576 5338 w -10 /LucidaSansUnicode00 f -(Motorola 68020) 1080 5458 w -10 /LucidaTypewriter f -(2c) 2160 5458 w -(2l) 2368 5458 w -(2a) 2576 5458 w -10 /LucidaSansUnicode00 f -(ARM 7500) 1080 5578 w -10 /LucidaTypewriter f -(5c) 2160 5578 w -(5l) 2368 5578 w -(5a) 2576 5578 w -10 /LucidaSansUnicode00 f -(Intel 960) 1080 5698 w -10 /LucidaTypewriter f -(6c) 2160 5698 w -(6l) 2368 5698 w -(6a) 2576 5698 w -10 /LucidaSansUnicode00 f -(DEC Alpha) 1080 5818 w -10 /LucidaTypewriter f -(7c) 2160 5818 w -(7l) 2368 5818 w -(7a) 2576 5818 w -10 /LucidaSansUnicode00 f -(Intel 386) 1080 5938 w -10 /LucidaTypewriter f -(8c) 2160 5938 w -(8l) 2368 5938 w -(8a) 2576 5938 w -10 /LucidaSansUnicode00 f -(AMD 29000) 1080 6058 w -10 /LucidaTypewriter f -(9c) 2160 6058 w -(9l) 2368 6058 w -(9a) 2576 6058 w -10 /LucidaSansUnicode00 f -(There) 720 6238 w -(is) 1046 6238 w -(a) 1174 6238 w -(further) 1278 6238 w -(breakdown) 1663 6238 w -(in) 2248 6238 w -(the) 2388 6238 w -(source) 2592 6238 w -(of) 2963 6238 w -(the) 3110 6238 w -(compilers) 3314 6238 w -(into) 3837 6238 w -(object-independent) 4075 6238 w -(and) 720 6358 w -(object-dependent) 955 6358 w -(parts.) 1884 6358 w -(All) 2250 6358 w -(of) 2432 6358 w -(the) 2584 6358 w -(object-independent) 2793 6358 w -(parts) 3812 6358 w -(are) 4113 6358 w -(combined) 4319 6358 w -(into) 4851 6358 w -(source) 720 6478 w -(files) 1076 6478 w -(in) 1312 6478 w -(the) 1437 6478 w -(directory) 1627 6478 w -10 /LucidaTypewriter f -(/sys/src/cmd/cc) 2093 6478 w -10 /LucidaSansUnicode00 f -(.) 3173 6478 w -(The) 3272 6478 w -(object-dependent) 3488 6478 w -(parts) 4397 6478 w -(are) 4679 6478 w -(col\255) 4866 6478 w -(lected) 720 6598 w -(in) 1048 6598 w -(a) 1175 6598 w -(separate) 1266 6598 w -(directory) 1716 6598 w -(for) 2183 6598 w -(each) 2358 6598 w -(compiler,) 2618 6598 w -(for) 3109 6598 w -(example) 3284 6598 w -10 /LucidaTypewriter f -(/sys/src/cmd/vc) 3733 6598 w -10 /LucidaSansUnicode00 f -(.) 4813 6598 w -(All) 4913 6598 w -(of) 720 6718 w -(the) 864 6718 w -(code,) 1066 6718 w -(both) 1376 6718 w -(object-independent) 1646 6718 w -(and) 2658 6718 w -(object-dependent,) 2885 6718 w -(is) 3838 6718 w -(machine-independent) 3965 6718 w -(and may be cross-compiled and executed on any of the architectures.) 720 6838 w +(2.) 720 4006 w +(Structure) 873 4006 w +10 /LucidaSansUnicode00 f +(The) 720 4162 w +(compiler) 945 4162 w +(is) 1412 4162 w +(a) 1536 4162 w +(single) 1636 4162 w +(program) 1970 4162 w +(that) 2431 4162 w +(produces) 2667 4162 w +(an) 3160 4162 w +(object) 3322 4162 w +(file.) 3665 4162 w +(Combined) 3925 4162 w +(in) 4466 4162 w +(the) 4602 4162 w +(com\255) 4802 4162 w +(piler) 720 4282 w +(are) 981 4282 w +(the) 1176 4282 w +(traditional) 1374 4282 w +(roles) 1915 4282 w +(of) 2196 4282 w +(preprocessor,) 2337 4282 w +(lexical) 3048 4282 w +(analyzer,) 3401 4282 w +(parser,) 3883 4282 w +(code) 4264 4282 w +(generator,) 4537 4282 w +(local) 720 4402 w +(optimizer,) 995 4402 w +(and) 1543 4402 w +(first) 1773 4402 w +(half) 2019 4402 w +(of) 2253 4402 w +(the) 2402 4402 w +(assembler.) 2608 4402 w +(The) 3218 4402 w +(object) 3450 4402 w +(files) 3799 4402 w +(are) 4052 4402 w +(binary) 4255 4402 w +(forms) 4608 4402 w +(of) 4942 4402 w +(assembly) 720 4522 w +(language,) 1230 4522 w +(similar) 1765 4522 w +(to) 2152 4522 w +(what) 2310 4522 w +(might) 2601 4522 w +(be) 2944 4522 w +(passed) 3123 4522 w +(between) 3522 4522 w +(the) 3989 4522 w +(first) 4203 4522 w +(and) 4457 4522 w +(second) 4696 4522 w +(passes of an assembler.) 720 4642 w +(Object) 720 4798 w +(files) 1075 4798 w +(and) 1318 4798 w +(libraries) 1539 4798 w +(are) 1974 4798 w +(combined) 2167 4798 w +(by) 2686 4798 w +(a) 2842 4798 w +(loader) 2938 4798 w +(program) 3284 4798 w +(to) 3741 4798 w +(produce) 3880 4798 w +(the) 4318 4798 w +(executable) 4514 4798 w +(binary.) 720 4918 w +(The) 1139 4918 w +(loader) 1373 4918 w +(combines) 1731 4918 w +(the) 2250 4918 w +(roles) 2458 4918 w +(of) 2749 4918 w +(second) 2899 4918 w +(half) 3295 4918 w +(of) 3530 4918 w +(the) 3680 4918 w +(assembler,) 3887 4918 w +(global) 4466 4918 w +(opti\255) 4817 4918 w +(mizer, and loader.) 720 5038 w +(The names of the compliers, loaders, and assemblers are as follows:) 1673 5038 w +(SPARC) 1080 5218 w +10 /LucidaTypewriter f +(kc) 2160 5218 w +(kl) 2368 5218 w +(ka) 2576 5218 w +10 /LucidaSansUnicode00 f +(PowerPC) 1080 5338 w +10 /LucidaTypewriter f +(qc) 2160 5338 w +(ql) 2368 5338 w +(qa) 2576 5338 w +10 /LucidaSansUnicode00 f +(MIPS) 1080 5458 w +10 /LucidaTypewriter f +(vc) 2160 5458 w +(vl) 2368 5458 w +(va) 2576 5458 w +10 /LucidaSansUnicode00 f +(MIPS little-endian) 1080 5578 w +10 /LucidaTypewriter f +(0c) 2160 5578 w +(0l) 2368 5578 w +(0a) 2576 5578 w +10 /LucidaSansUnicode00 f +(Motorola 68000) 1080 5698 w +10 /LucidaTypewriter f +(1c) 2160 5698 w +(1l) 2368 5698 w +(1a) 2576 5698 w +10 /LucidaSansUnicode00 f +(Motorola 68020) 1080 5818 w +10 /LucidaTypewriter f +(2c) 2160 5818 w +(2l) 2368 5818 w +(2a) 2576 5818 w +10 /LucidaSansUnicode00 f +(ARM) 1080 5938 w +10 /LucidaTypewriter f +(5c) 2160 5938 w +(5l) 2368 5938 w +(5a) 2576 5938 w +10 /LucidaSansUnicode00 f +(AMD64) 1080 6058 w +10 /LucidaTypewriter f +(6c) 2160 6058 w +(6l) 2368 6058 w +(6a) 2576 6058 w +10 /LucidaSansUnicode00 f +(DEC Alpha) 1080 6178 w +10 /LucidaTypewriter f +(7c) 2160 6178 w +(7l) 2368 6178 w +(7a) 2576 6178 w +10 /LucidaSansUnicode00 f +(Intel 386) 1080 6298 w +10 /LucidaTypewriter f +(8c) 2160 6298 w +(8l) 2368 6298 w +(8a) 2576 6298 w +10 /LucidaSansUnicode00 f +(PowerPC 64-bit) 1080 6418 w +10 /LucidaTypewriter f +(9c) 2160 6418 w +(9l) 2368 6418 w +(9a) 2576 6418 w +10 /LucidaSansUnicode00 f +(There) 720 6598 w +(is) 1046 6598 w +(a) 1174 6598 w +(further) 1278 6598 w +(breakdown) 1663 6598 w +(in) 2248 6598 w +(the) 2388 6598 w +(source) 2592 6598 w +(of) 2963 6598 w +(the) 3110 6598 w +(compilers) 3314 6598 w +(into) 3837 6598 w +(object-independent) 4075 6598 w +(and) 720 6718 w +(object-dependent) 955 6718 w +(parts.) 1884 6718 w +(All) 2250 6718 w +(of) 2432 6718 w +(the) 2584 6718 w +(object-independent) 2793 6718 w +(parts) 3812 6718 w +(are) 4113 6718 w +(combined) 4319 6718 w +(into) 4851 6718 w +(source) 720 6838 w +(files) 1099 6838 w +(in) 1359 6838 w +(the) 1508 6838 w +(directory) 1721 6838 w +10 /LucidaTypewriter f +(/sys/src/cmd/cc) 2210 6838 w +10 /LucidaSansUnicode00 f +(.) 3290 6838 w +(The) 3412 6838 w +(object-dependent) 3651 6838 w +(parts) 4583 6838 w +(are) 4888 6838 w 8 /S1 f (__________________) 720 6938 w 8 /LucidaSansUnicode00 f @@ -4010,315 +4026,300 @@ 2 pagesetup 10 /LucidaSansUnicode00 f (\255 2 \255) 2783 480 w +(collected) 720 840 w +(in) 1194 840 w +(a) 1326 840 w +(separate) 1422 840 w +(directory) 1877 840 w +(for) 2349 840 w +(each) 2529 840 w +(compiler,) 2795 840 w +(for) 3292 840 w +(example) 3473 840 w +10 /LucidaTypewriter f +(/sys/src/cmd/vc) 3928 840 w +10 /LucidaSansUnicode00 f +(.) 5008 840 w +(All) 720 960 w +(of) 943 960 w +(the) 1137 960 w +(code,) 1387 960 w +(both) 1745 960 w +(object-independent) 2063 960 w +(and) 3123 960 w +(object-dependent,) 3398 960 w +(is) 4399 960 w +(machine-) 4574 960 w +(independent and may be cross-compiled and executed on any of the architectures.) 720 1080 w 10 /LucidaSans-Demi f -(3.) 720 840 w -(The Language) 873 840 w -10 /LucidaSansUnicode00 f -(The) 720 996 w -(compiler) 938 996 w -(implements) 1399 996 w -(ANSI) 2006 996 w -(C) 2270 996 w -(with) 2377 996 w -(some) 2620 996 w -(restrictions) 2919 996 w -(and) 3503 996 w -(extensions) 3721 996 w -([ANSI90].) 4285 996 w -(Most) 4805 996 w -(of) 720 1116 w -(the) 856 1116 w -(restrictions) 1048 1116 w -(are) 1631 1116 w -(due) 1820 1116 w -(to) 2038 1116 w -(personal) 2173 1116 w -(preference,) 2628 1116 w -(while) 3216 1116 w -(most) 3506 1116 w -(of) 3785 1116 w -(the) 3920 1116 w -(extensions) 4112 1116 w -(were) 4675 1116 w -(to) 4942 1116 w -(help) 720 1236 w -(in) 977 1236 w -(the) 1115 1236 w -(implementation) 1317 1236 w -(of) 2126 1236 w -(Plan) 2271 1236 w -(9.) 2519 1236 w -(There) 2694 1236 w -(are) 3020 1236 w -(other) 3220 1236 w -(departures) 3525 1236 w -(from) 4098 1236 w -(the) 4378 1236 w -(standard,) 4581 1236 w -(particularly in the libraries, that are beyond the scope of this paper.) 720 1356 w +(3.) 720 1320 w +(The Language) 873 1320 w +10 /LucidaSansUnicode00 f +(The) 720 1476 w +(compiler) 938 1476 w +(implements) 1399 1476 w +(ANSI) 2006 1476 w +(C) 2270 1476 w +(with) 2377 1476 w +(some) 2620 1476 w +(restrictions) 2919 1476 w +(and) 3503 1476 w +(extensions) 3721 1476 w +([ANSI90].) 4285 1476 w +(Most) 4805 1476 w +(of) 720 1596 w +(the) 856 1596 w +(restrictions) 1048 1596 w +(are) 1631 1596 w +(due) 1820 1596 w +(to) 2038 1596 w +(personal) 2173 1596 w +(preference,) 2628 1596 w +(while) 3216 1596 w +(most) 3506 1596 w +(of) 3785 1596 w +(the) 3920 1596 w +(extensions) 4112 1596 w +(were) 4675 1596 w +(to) 4942 1596 w +(help) 720 1716 w +(in) 977 1716 w +(the) 1115 1716 w +(implementation) 1317 1716 w +(of) 2126 1716 w +(Plan) 2271 1716 w +(9.) 2519 1716 w +(There) 2694 1716 w +(are) 3020 1716 w +(other) 3220 1716 w +(departures) 3525 1716 w +(from) 4098 1716 w +(the) 4378 1716 w +(standard,) 4581 1716 w +(particularly in the libraries, that are beyond the scope of this paper.) 720 1836 w 10 /LucidaSans-Demi f -(3.1.) 720 1596 w -(Register, volatile, const) 962 1596 w -10 /LucidaSansUnicode00 f -(The) 720 1752 w -(keyword) 944 1752 w -10 /LucidaTypewriter f -(register) 1395 1752 w -10 /LucidaSansUnicode00 f -(is) 2014 1752 w -(recognized) 2137 1752 w -(syntactically) 2718 1752 w -(but) 3351 1752 w -(is) 3556 1752 w -(semantically) 3679 1752 w -(ignored.) 4321 1752 w -(Thus) 4802 1752 w -(taking) 720 1872 w -(the) 1057 1872 w -(address) 1246 1872 w -(of) 1660 1872 w -(a) 1792 1872 w -10 /LucidaTypewriter f -(register) 1881 1872 w -10 /LucidaSansUnicode00 f -(variable) 2491 1872 w -(is) 2904 1872 w -(not) 3017 1872 w -(diagnosed.) 3210 1872 w -(The) 3809 1872 w -(keyword) 4023 1872 w -10 /LucidaTypewriter f -(volatile) 4464 1872 w -10 /LucidaSansUnicode00 f -(disables) 720 1992 w -(all) 1167 1992 w -(optimizations,) 1330 1992 w -(in) 2077 1992 w -(particular) 2219 1992 w -(registerization,) 2733 1992 w -(of) 3519 1992 w -(the) 3668 1992 w -(corresponding) 3874 1992 w -(variable.) 4628 1992 w -(The) 720 2112 w -(keyword) 940 2112 w -10 /LucidaTypewriter f -(const) 1387 2112 w -10 /LucidaSansUnicode00 f -(generates) 1786 2112 w -(warnings) 2301 2112 w -(\(if) 2779 2112 w -(warnings) 2917 2112 w -(are) 3394 2112 w -(enabled) 3584 2112 w -(by) 4006 2112 w -(the) 4159 2112 w -(compiler) 4352 2112 w +(3.1.) 720 2076 w +(Register, volatile, const) 962 2076 w +10 /LucidaSansUnicode00 f +(The) 720 2232 w +(keyword) 944 2232 w +10 /LucidaTypewriter f +(register) 1395 2232 w +10 /LucidaSansUnicode00 f +(is) 2014 2232 w +(recognized) 2137 2232 w +(syntactically) 2718 2232 w +(but) 3351 2232 w +(is) 3556 2232 w +(semantically) 3679 2232 w +(ignored.) 4321 2232 w +(Thus) 4802 2232 w +(taking) 720 2352 w +(the) 1057 2352 w +(address) 1246 2352 w +(of) 1660 2352 w +(a) 1792 2352 w +10 /LucidaTypewriter f +(register) 1881 2352 w +10 /LucidaSansUnicode00 f +(variable) 2491 2352 w +(is) 2904 2352 w +(not) 3017 2352 w +(diagnosed.) 3210 2352 w +(The) 3809 2352 w +(keyword) 4023 2352 w +10 /LucidaTypewriter f +(volatile) 4464 2352 w +10 /LucidaSansUnicode00 f +(disables) 720 2472 w +(all) 1167 2472 w +(optimizations,) 1330 2472 w +(in) 2077 2472 w +(particular) 2219 2472 w +(registerization,) 2733 2472 w +(of) 3519 2472 w +(the) 3668 2472 w +(corresponding) 3874 2472 w +(variable.) 4628 2472 w +(The) 720 2592 w +(keyword) 940 2592 w +10 /LucidaTypewriter f +(const) 1387 2592 w +10 /LucidaSansUnicode00 f +(generates) 1786 2592 w +(warnings) 2301 2592 w +(\(if) 2779 2592 w +(warnings) 2917 2592 w +(are) 3394 2592 w +(enabled) 3584 2592 w +(by) 4006 2592 w +(the) 4159 2592 w +(compiler) 4352 2592 w 10 /LucidaSansUnicode20 f -(\031) 4775 2112 w -10 /LucidaSansUnicode00 f -(s) 4807 2112 w -10 /LucidaTypewriter f -(-w) 4896 2112 w -10 /LucidaSansUnicode00 f -(option\) of non-constant use of the variable, but does not affect the generated code.) 720 2232 w +(\031) 4775 2592 w +10 /LucidaSansUnicode00 f +(s) 4807 2592 w +10 /LucidaTypewriter f +(-w) 4896 2592 w +10 /LucidaSansUnicode00 f +(option\) of non-constant use of the variable, but does not affect the generated code.) 720 2712 w 10 /LucidaSans-Demi f -(3.2.) 720 2472 w -(The preprocessor) 962 2472 w -10 /LucidaSansUnicode00 f -(The C preprocessor is probably the biggest departure from the ANSI standard.) 720 2628 w -(The preprocessor built into the Plan) 720 2784 w -(9) 2495 2784 w -(compilers) 2591 2784 w -(does) 3098 2784 w -(not) 3362 2784 w -(support) 3555 2784 w -10 /LucidaTypewriter f -(#if) 3966 2784 w -10 /LucidaSansUnicode00 f -(,) 4182 2784 w -(although) 4247 2784 w -(it) 4710 2784 w -(does) 4809 2784 w -(handle) 720 2904 w -10 /LucidaTypewriter f -(#ifdef) 1080 2904 w -10 /LucidaSansUnicode00 f -(and) 1545 2904 w -10 /LucidaTypewriter f -(#include) 1758 2904 w -10 /LucidaSansUnicode00 f -(.) 2334 2904 w -(If) 2431 2904 w -(it) 2530 2904 w -(is) 2629 2904 w -(necessary) 2742 2904 w -(to) 3250 2904 w -(be) 3381 2904 w -(more) 3533 2904 w -(standard, the source text) 3817 2904 w -(can first be run through the separate ANSI C preprocessor,) 720 3024 w -10 /LucidaTypewriter f -(cpp) 3606 3024 w -10 /LucidaSansUnicode00 f -(.) 3822 3024 w +(3.2.) 720 2952 w +(The preprocessor) 962 2952 w +10 /LucidaSansUnicode00 f +(The C preprocessor is probably the biggest departure from the ANSI standard.) 720 3108 w +(The preprocessor built into the Plan) 720 3264 w +(9) 2495 3264 w +(compilers) 2591 3264 w +(does) 3098 3264 w +(not) 3362 3264 w +(support) 3555 3264 w +10 /LucidaTypewriter f +(#if) 3966 3264 w +10 /LucidaSansUnicode00 f +(,) 4182 3264 w +(although) 4247 3264 w +(it) 4710 3264 w +(does) 4809 3264 w +(handle) 720 3384 w +10 /LucidaTypewriter f +(#ifdef) 1080 3384 w +10 /LucidaSansUnicode00 f +(and) 1545 3384 w +10 /LucidaTypewriter f +(#include) 1758 3384 w +10 /LucidaSansUnicode00 f +(.) 2334 3384 w +(If) 2431 3384 w +(it) 2530 3384 w +(is) 2629 3384 w +(necessary) 2742 3384 w +(to) 3250 3384 w +(be) 3381 3384 w +(more) 3533 3384 w +(standard, the source text) 3817 3384 w +(can first be run through the separate ANSI C preprocessor,) 720 3504 w +10 /LucidaTypewriter f +(cpp) 3606 3504 w +10 /LucidaSansUnicode00 f +(.) 3822 3504 w 10 /LucidaSans-Demi f -(3.3.) 720 3264 w -(Unnamed substructures) 962 3264 w -10 /LucidaSansUnicode00 f -(The) 720 3420 w -(most) 948 3420 w -(important) 1237 3420 w -(and) 1762 3420 w -(most) 1989 3420 w -(heavily) 2278 3420 w -(used) 2660 3420 w -(of) 2939 3420 w -(the) 3084 3420 w -(extensions) 3286 3420 w -(is) 3859 3420 w -(the) 3987 3420 w -(declaration) 4190 3420 w -(of) 4777 3420 w -(an) 4923 3420 w -(unnamed substructure or subunion.) 720 3540 w -(For example:) 2533 3540 w -10 /LucidaTypewriter f -(typedef) 1152 3720 w -(struct) 1152 3840 w -(lock) 1872 3840 w -({) 1152 3960 w -(int) 1512 4080 w -(locked;) 2016 4080 w -(} Lock;) 1152 4200 w -(typedef) 1152 4440 w -(struct) 1152 4560 w -(node) 1872 4560 w -({) 1152 4680 w -(int) 1512 4800 w -(type;) 1872 4800 w -(union) 1512 4920 w -({) 1512 5040 w -(double dval;) 1872 5160 w -(float) 1872 5280 w -(fval;) 2376 5280 w -(long) 1872 5400 w -(lval;) 2376 5400 w -(};) 1512 5520 w -(Lock;) 1512 5640 w -(} Node;) 1152 5760 w -(Lock*) 1152 6000 w -(lock;) 1872 6000 w -(Node*) 1152 6120 w -(node;) 1872 6120 w -10 /LucidaSansUnicode00 f -(The) 720 6300 w -(declaration) 940 6300 w -(of) 1518 6300 w -10 /LucidaTypewriter f -(Node) 1656 6300 w -10 /LucidaSansUnicode00 f -(has) 1984 6300 w -(an) 2192 6300 w -(unnamed) 2349 6300 w -(substructure) 2842 6300 w -(of) 3496 6300 w -(type) 3634 6300 w -10 /LucidaTypewriter f -(Lock) 3882 6300 w -10 /LucidaSansUnicode00 f -(and) 4210 6300 w -(an) 4430 6300 w -(unnamed) 4587 6300 w -(subunion.) 720 6420 w -(One) 1282 6420 w -(use) 1524 6420 w -(of) 1739 6420 w -(this) 1883 6420 w -(feature) 2108 6420 w -(allows) 2497 6420 w -(references) 2844 6420 w -(to) 3396 6420 w -(elements) 3539 6420 w -(of) 4024 6420 w -(the) 4167 6420 w -(subunit) 4367 6420 w -(to) 4778 6420 w -(be) 4921 6420 w -(accessed) 720 6540 w -(as) 1257 6540 w -(if) 1466 6540 w -(they) 1635 6540 w -(were) 1945 6540 w -(in) 2278 6540 w -(the) 2472 6540 w -(outer) 2730 6540 w -(structure.) 3090 6540 w -(Thus) 3695 6540 w -10 /LucidaTypewriter f -(node->dval) 4036 6540 w -10 /LucidaSansUnicode00 f -(and) 4860 6540 w -10 /LucidaTypewriter f -(node->locked) 720 6660 w -10 /LucidaSansUnicode00 f -(are legitimate references.) 1616 6660 w -(When) 720 6816 w -(an) 1020 6816 w -(outer) 1171 6816 w -(structure) 1462 6816 w -(is) 1934 6816 w -(used) 2048 6816 w -(in) 2314 6816 w -(a) 2439 6816 w -(context) 2529 6816 w -(that) 2929 6816 w -(is) 3155 6816 w -(only) 3270 6816 w -(legal) 3509 6816 w -(for) 3775 6816 w -(an) 3949 6816 w -(unnamed) 4101 6816 w -(substruc\255) 4589 6816 w -(ture,) 720 6936 w -(the) 982 6936 w -(compiler) 1171 6936 w -(promotes) 1628 6936 w -(the) 2125 6936 w -(reference) 2314 6936 w -(to) 2804 6936 w -(the) 2936 6936 w -(unnamed) 3124 6936 w -(substructure.) 3610 6936 w -(This) 4321 6936 w -(is) 4559 6936 w -(true) 4672 6936 w -(for) 4901 6936 w -(references) 720 7056 w -(to) 1275 7056 w -(structures) 1421 7056 w -(and) 1958 7056 w -(to) 2186 7056 w -(references) 2333 7056 w -(to) 2889 7056 w -(pointers) 3036 7056 w -(to) 3485 7056 w -(structures.) 3632 7056 w -(This) 4234 7056 w -(happens) 4488 7056 w -(in) 4949 7056 w -(assignment) 720 7176 w -(statements) 1318 7176 w -(and) 1893 7176 w -(in) 2113 7176 w -(argument) 2243 7176 w -(passing) 2750 7176 w -(where) 3162 7176 w -(prototypes) 3493 7176 w -(have) 4054 7176 w -(been) 4318 7176 w -(declared.) 4594 7176 w -(Thus, continuing with the example,) 720 7296 w +(3.3.) 720 3744 w +(Unnamed substructures) 962 3744 w +10 /LucidaSansUnicode00 f +(The) 720 3900 w +(most) 948 3900 w +(important) 1237 3900 w +(and) 1762 3900 w +(most) 1989 3900 w +(heavily) 2278 3900 w +(used) 2660 3900 w +(of) 2939 3900 w +(the) 3084 3900 w +(extensions) 3286 3900 w +(is) 3859 3900 w +(the) 3987 3900 w +(declaration) 4190 3900 w +(of) 4777 3900 w +(an) 4923 3900 w +(unnamed substructure or subunion.) 720 4020 w +(For example:) 2533 4020 w +10 /LucidaTypewriter f +(typedef) 1152 4200 w +(struct) 1152 4320 w +(lock) 1872 4320 w +({) 1152 4440 w +(int) 1512 4560 w +(locked;) 2016 4560 w +(} Lock;) 1152 4680 w +(typedef) 1152 4920 w +(struct) 1152 5040 w +(node) 1872 5040 w +({) 1152 5160 w +(int) 1512 5280 w +(type;) 1872 5280 w +(union) 1512 5400 w +({) 1512 5520 w +(double dval;) 1872 5640 w +(float) 1872 5760 w +(fval;) 2376 5760 w +(long) 1872 5880 w +(lval;) 2376 5880 w +(};) 1512 6000 w +(Lock;) 1512 6120 w +(} Node;) 1152 6240 w +(Lock*) 1152 6480 w +(lock;) 1872 6480 w +(Node*) 1152 6600 w +(node;) 1872 6600 w +10 /LucidaSansUnicode00 f +(The) 720 6780 w +(declaration) 940 6780 w +(of) 1518 6780 w +10 /LucidaTypewriter f +(Node) 1656 6780 w +10 /LucidaSansUnicode00 f +(has) 1984 6780 w +(an) 2192 6780 w +(unnamed) 2349 6780 w +(substructure) 2842 6780 w +(of) 3496 6780 w +(type) 3634 6780 w +10 /LucidaTypewriter f +(Lock) 3882 6780 w +10 /LucidaSansUnicode00 f +(and) 4210 6780 w +(an) 4430 6780 w +(unnamed) 4587 6780 w +(subunion.) 720 6900 w +(One) 1282 6900 w +(use) 1524 6900 w +(of) 1739 6900 w +(this) 1883 6900 w +(feature) 2108 6900 w +(allows) 2497 6900 w +(references) 2844 6900 w +(to) 3396 6900 w +(elements) 3539 6900 w +(of) 4024 6900 w +(the) 4167 6900 w +(subunit) 4367 6900 w +(to) 4778 6900 w +(be) 4921 6900 w +(accessed) 720 7020 w +(as) 1257 7020 w +(if) 1466 7020 w +(they) 1635 7020 w +(were) 1945 7020 w +(in) 2278 7020 w +(the) 2472 7020 w +(outer) 2730 7020 w +(structure.) 3090 7020 w +(Thus) 3695 7020 w +10 /LucidaTypewriter f +(node->dval) 4036 7020 w +10 /LucidaSansUnicode00 f +(and) 4860 7020 w +10 /LucidaTypewriter f +(node->locked) 720 7140 w +10 /LucidaSansUnicode00 f +(are legitimate references.) 1616 7140 w +(When) 720 7296 w +(an) 1052 7296 w +(outer) 1236 7296 w +(structure) 1560 7296 w +(is) 2065 7296 w +(used) 2212 7296 w +(in) 2511 7296 w +(a) 2669 7296 w +(context) 2791 7296 w +(that) 3223 7296 w +(is) 3481 7296 w +(only) 3628 7296 w +(legal) 3899 7296 w +(for) 4197 7296 w +(an) 4403 7296 w +(unnamed) 4587 7296 w cleartomark showpage saveobj restore @@ -4329,284 +4330,230 @@ 3 pagesetup 10 /LucidaSansUnicode00 f (\255 3 \255) 2783 480 w -10 /LucidaTypewriter f -(lock = node;) 1152 900 w -10 /LucidaSansUnicode00 f -(would) 720 1080 w -(assign) 1071 1080 w -(a) 1440 1080 w -(pointer) 1554 1080 w -(to) 1962 1080 w -(the) 2119 1080 w -(unnamed) 2333 1080 w -10 /LucidaTypewriter f -(Lock) 2845 1080 w -10 /LucidaSansUnicode00 f -(in) 3193 1080 w -(the) 3344 1080 w -10 /LucidaTypewriter f -(Node) 3559 1080 w -10 /LucidaSansUnicode00 f -(to) 3907 1080 w -(the) 4065 1080 w -(variable) 4280 1080 w -10 /LucidaTypewriter f -(lock) 4720 1080 w -10 /LucidaSansUnicode00 f -(.) 5008 1080 w -(Another example,) 720 1200 w -10 /LucidaTypewriter f -(extern void lock\(Lock*\);) 1152 1380 w -(func\(...\)) 1152 1500 w -({) 1152 1620 w -(...) 1512 1740 w -(lock\(node\);) 1512 1860 w -(...) 1512 1980 w -(}) 1152 2100 w -10 /LucidaSansUnicode00 f -(will pass a pointer to the) 720 2280 w -10 /LucidaTypewriter f -(Lock) 1953 2280 w -10 /LucidaSansUnicode00 f -(substructure.) 2273 2280 w -(Finally,) 720 2436 w -(in) 1112 2436 w -(places) 1253 2436 w -(where) 1608 2436 w -(context) 1950 2436 w -(is) 2365 2436 w -(insufficient) 2496 2436 w -(to) 3089 2436 w -(identify) 3238 2436 w -(the) 3654 2436 w -(unnamed) 3860 2436 w -(structure,) 4364 2436 w -(the) 4885 2436 w -(type) 720 2556 w -(name) 966 2556 w -(\(it) 1270 2556 w -(must) 1407 2556 w -(be) 1688 2556 w -(a) 1845 2556 w -10 /LucidaTypewriter f -(typedef) 1938 2556 w -10 /LucidaSansUnicode00 f -(\)) 2442 2556 w -(of) 2512 2556 w -(the) 2647 2556 w -(unnamed) 2839 2556 w -(structure) 3329 2556 w -(can) 3804 2556 w -(be) 4009 2556 w -(used) 4165 2556 w -(as) 4434 2556 w -(an) 4577 2556 w -(identi\255) 4731 2556 w -(fier.) 720 2676 w -(In) 983 2676 w -(our) 1110 2676 w -(example,) 1310 2676 w -10 /LucidaTypewriter f -(&node->Lock) 1792 2676 w -10 /LucidaSansUnicode00 f -(gives) 2621 2676 w -(the) 2908 2676 w -(address) 3100 2676 w -(of) 3517 2676 w -(the) 3652 2676 w -(anonymous) 3844 2676 w -10 /LucidaTypewriter f -(Lock) 4440 2676 w -10 /LucidaSansUnicode00 f -(struc\255) 4765 2676 w -(ture.) 720 2796 w +(substructure,) 720 840 w +(the compiler promotes the reference to the unnamed substructure.) 1399 840 w +(This is) 4723 840 w +(true) 720 960 w +(for) 957 960 w +(references) 1137 960 w +(to) 1685 960 w +(structures) 1824 960 w +(and) 2354 960 w +(to) 2575 960 w +(references) 2714 960 w +(to) 3263 960 w +(pointers) 3403 960 w +(to) 3845 960 w +(structures.) 3985 960 w +(This) 4580 960 w +(hap\255) 4827 960 w +(pens) 720 1080 w +(in) 999 1080 w +(assignment) 1137 1080 w +(statements) 1742 1080 w +(and) 2324 1080 w +(in) 2551 1080 w +(argument) 2689 1080 w +(passing) 3204 1080 w +(where) 3624 1080 w +(prototypes) 3963 1080 w +(have) 4532 1080 w +(been) 4803 1080 w +(declared.) 720 1200 w +(Thus, continuing with the example,) 1230 1200 w +10 /LucidaTypewriter f +(lock = node;) 1152 1380 w +10 /LucidaSansUnicode00 f +(would) 720 1560 w +(assign) 1071 1560 w +(a) 1440 1560 w +(pointer) 1554 1560 w +(to) 1962 1560 w +(the) 2119 1560 w +(unnamed) 2333 1560 w +10 /LucidaTypewriter f +(Lock) 2845 1560 w +10 /LucidaSansUnicode00 f +(in) 3193 1560 w +(the) 3344 1560 w +10 /LucidaTypewriter f +(Node) 3559 1560 w +10 /LucidaSansUnicode00 f +(to) 3907 1560 w +(the) 4065 1560 w +(variable) 4280 1560 w +10 /LucidaTypewriter f +(lock) 4720 1560 w +10 /LucidaSansUnicode00 f +(.) 5008 1560 w +(Another example,) 720 1680 w +10 /LucidaTypewriter f +(extern void lock\(Lock*\);) 1152 1860 w +(func\(...\)) 1152 1980 w +({) 1152 2100 w +(...) 1512 2220 w +(lock\(node\);) 1512 2340 w +(...) 1512 2460 w +(}) 1152 2580 w +10 /LucidaSansUnicode00 f +(will pass a pointer to the) 720 2760 w +10 /LucidaTypewriter f +(Lock) 1953 2760 w +10 /LucidaSansUnicode00 f +(substructure.) 2273 2760 w +(Finally,) 720 2916 w +(in) 1112 2916 w +(places) 1253 2916 w +(where) 1608 2916 w +(context) 1950 2916 w +(is) 2365 2916 w +(insufficient) 2496 2916 w +(to) 3089 2916 w +(identify) 3238 2916 w +(the) 3654 2916 w +(unnamed) 3860 2916 w +(structure,) 4364 2916 w +(the) 4885 2916 w +(type) 720 3036 w +(name) 966 3036 w +(\(it) 1270 3036 w +(must) 1407 3036 w +(be) 1688 3036 w +(a) 1845 3036 w +10 /LucidaTypewriter f +(typedef) 1938 3036 w +10 /LucidaSansUnicode00 f +(\)) 2442 3036 w +(of) 2512 3036 w +(the) 2647 3036 w +(unnamed) 2839 3036 w +(structure) 3329 3036 w +(can) 3804 3036 w +(be) 4009 3036 w +(used) 4165 3036 w +(as) 4434 3036 w +(an) 4577 3036 w +(identi\255) 4731 3036 w +(fier.) 720 3156 w +(In) 983 3156 w +(our) 1110 3156 w +(example,) 1310 3156 w +10 /LucidaTypewriter f +(&node->Lock) 1792 3156 w +10 /LucidaSansUnicode00 f +(gives) 2621 3156 w +(the) 2908 3156 w +(address) 3100 3156 w +(of) 3517 3156 w +(the) 3652 3156 w +(anonymous) 3844 3156 w +10 /LucidaTypewriter f +(Lock) 4440 3156 w +10 /LucidaSansUnicode00 f +(struc\255) 4765 3156 w +(ture.) 720 3276 w 10 /LucidaSans-Demi f -(3.4.) 720 3036 w -(Structure displays) 962 3036 w -10 /LucidaSansUnicode00 f -(A) 720 3192 w -(structure) 836 3192 w -(cast) 1321 3192 w -(followed) 1562 3192 w -(by) 2022 3192 w -(a) 2184 3192 w -(list) 2286 3192 w -(of) 2480 3192 w -(expressions) 2626 3192 w -(in) 3256 3192 w -(braces) 3395 3192 w -(is) 3760 3192 w -(an) 3888 3192 w -(expression) 4053 3192 w -(with) 4632 3192 w -(the) 4885 3192 w -(type) 720 3312 w -(of) 964 3312 w -(the) 1098 3312 w -(structure) 1289 3312 w -(and) 1763 3312 w -(elements) 1979 3312 w -(assigned) 2455 3312 w -(from) 2920 3312 w -(the) 3188 3312 w -(corresponding) 3378 3312 w -(list.) 4116 3312 w -(Structures) 4361 3312 w -(are) 4888 3312 w -(now almost first-class citizens of the language.) 720 3432 w -(It is common to see code like this:) 3092 3432 w -10 /LucidaTypewriter f -(r = \(Rectangle\){point1, \(Point\){x,y+2}};) 1152 3612 w +(3.4.) 720 3516 w +(Structure displays) 962 3516 w +10 /LucidaSansUnicode00 f +(A) 720 3672 w +(structure) 836 3672 w +(cast) 1321 3672 w +(followed) 1562 3672 w +(by) 2022 3672 w +(a) 2184 3672 w +(list) 2286 3672 w +(of) 2480 3672 w +(expressions) 2626 3672 w +(in) 3256 3672 w +(braces) 3395 3672 w +(is) 3760 3672 w +(an) 3888 3672 w +(expression) 4053 3672 w +(with) 4632 3672 w +(the) 4885 3672 w +(type) 720 3792 w +(of) 964 3792 w +(the) 1098 3792 w +(structure) 1289 3792 w +(and) 1763 3792 w +(elements) 1979 3792 w +(assigned) 2455 3792 w +(from) 2920 3792 w +(the) 3188 3792 w +(corresponding) 3378 3792 w +(list.) 4116 3792 w +(Structures) 4361 3792 w +(are) 4888 3792 w +(now almost first-class citizens of the language.) 720 3912 w +(It is common to see code like this:) 3092 3912 w +10 /LucidaTypewriter f +(r = \(Rectangle\){point1, \(Point\){x,y+2}};) 1152 4092 w 10 /LucidaSans-Demi f -(3.5.) 720 3912 w -(Initialization indexes) 962 3912 w -10 /LucidaSansUnicode00 f -(In) 720 4068 w -(initializers) 851 4068 w -(of) 1395 4068 w -(arrays,) 1533 4068 w -(one) 1900 4068 w -(may) 2119 4068 w -(place) 2359 4068 w -(a) 2653 4068 w -(constant) 2748 4068 w -(expression) 3204 4068 w -(in) 3775 4068 w -(square) 3906 4068 w -(brackets) 4274 4068 w -(before) 4726 4068 w -(an initializer.) 720 4188 w -(This causes the next initializer to assign the indicated element.) 1418 4188 w -(For exam\255) 4554 4188 w -(ple:) 720 4308 w -10 /LucidaTypewriter f -(enum errors) 1152 4488 w -({) 1152 4608 w -(Etoobig,) 1512 4728 w -(Ealarm,) 1512 4848 w -(Egreg) 1512 4968 w -(};) 1152 5088 w -(char* errstrings[] =) 1152 5208 w -({) 1152 5328 w -([Ealarm]) 1512 5448 w -("Alarm call",) 2232 5448 w -([Egreg]) 1512 5568 w -("Panic: out of mbufs",) 2232 5568 w -([Etoobig] "Arg list too long",) 1512 5688 w -(};) 1152 5808 w -10 /LucidaSansUnicode00 f -(In) 720 5988 w -(the) 851 5988 w -(same) 1046 5988 w -(way,) 1341 5988 w -(individual) 1597 5988 w -(structures) 2110 5988 w -(members) 2639 5988 w -(may) 3132 5988 w -(be) 3372 5988 w -(initialized) 3531 5988 w -(in) 4046 5988 w -(any) 4178 5988 w -(order) 4388 5988 w -(by) 4691 5988 w -(pre\255) 4847 5988 w -(ceding) 720 6108 w -(the initialization with) 1076 6108 w -10 /LucidaTypewriter f -(.tagname) 2132 6108 w -10 /LucidaSansUnicode00 f -(.) 2708 6108 w -(Both forms allow an optional) 2804 6108 w -10 /LucidaTypewriter f -(=) 4230 6108 w -10 /LucidaSansUnicode00 f -(, to be compat\255) 4302 6108 w -(ible with a proposed extension to ANSI C.) 720 6228 w -10 /LucidaSans-Demi f -(3.6.) 720 6468 w -(External register) 962 6468 w -10 /LucidaSansUnicode00 f -(The) 720 6624 w -(declaration) 945 6624 w -10 /LucidaTypewriter f -(extern) 1528 6624 w -(register) 2004 6624 w -10 /LucidaSansUnicode00 f -(will) 2624 6624 w -(dedicate) 2832 6624 w -(a) 3287 6624 w -(register) 3387 6624 w -(to) 3805 6624 w -(a) 3948 6624 w -(variable) 4048 6624 w -(on) 4473 6624 w -(a) 4641 6624 w -(global) 4741 6624 w -(basis.) 720 6744 w -(It) 1067 6744 w -(can) 1167 6744 w -(be) 1369 6744 w -(used) 1522 6744 w -(only) 1788 6744 w -(under) 2026 6744 w -(special) 2344 6744 w -(circumstances.) 2712 6744 w -(External) 3499 6744 w -(register) 3927 6744 w -(variables) 4333 6744 w -(must) 4797 6744 w -(be) 720 6864 w -(identically) 875 6864 w -(declared) 1403 6864 w -(in) 1853 6864 w -(all) 1980 6864 w -(modules) 2130 6864 w -(and) 2582 6864 w -(libraries.) 2799 6864 w -(The) 3294 6864 w -(feature) 3512 6864 w -(is) 3893 6864 w -(not) 4010 6864 w -(intended) 4207 6864 w -(for) 4672 6864 w -(effi\255) 4848 6864 w -(ciency,) 720 6984 w -(although) 1107 6984 w -(it) 1591 6984 w -(can) 1711 6984 w -(produce) 1933 6984 w -(efficient) 2384 6984 w -(code;) 2832 6984 w -(rather) 3149 6984 w -(it) 3495 6984 w -(represents) 3615 6984 w -(a) 4182 6984 w -(unique) 4290 6984 w -(storage) 4677 6984 w -(class) 720 7104 w -(that) 998 7104 w -(would) 1230 7104 w -(be) 1563 7104 w -(hard) 1723 7104 w -(to) 1985 7104 w -(get) 2124 7104 w -(any) 2321 7104 w -(other) 2532 7104 w -(way.) 2831 7104 w -(On) 3121 7104 w -(a) 3303 7104 w -(shared-memory) 3400 7104 w -(multi-processor,) 4224 7104 w -(an) 720 7224 w -(external) 871 7224 w -(register) 1302 7224 w -(is) 1709 7224 w -(one-per-processor) 1823 7224 w -(and) 2788 7224 w -(neither) 3001 7224 w -(one-per-procedure) 3377 7224 w -(\(automatic\)) 4359 7224 w -(or) 4938 7224 w +(3.5.) 720 4392 w +(Initialization indexes) 962 4392 w +10 /LucidaSansUnicode00 f +(In) 720 4548 w +(initializers) 851 4548 w +(of) 1395 4548 w +(arrays,) 1533 4548 w +(one) 1900 4548 w +(may) 2119 4548 w +(place) 2359 4548 w +(a) 2653 4548 w +(constant) 2748 4548 w +(expression) 3204 4548 w +(in) 3775 4548 w +(square) 3906 4548 w +(brackets) 4274 4548 w +(before) 4726 4548 w +(an initializer.) 720 4668 w +(This causes the next initializer to assign the indicated element.) 1418 4668 w +(For exam\255) 4554 4668 w +(ple:) 720 4788 w +10 /LucidaTypewriter f +(enum errors) 1152 4968 w +({) 1152 5088 w +(Etoobig,) 1512 5208 w +(Ealarm,) 1512 5328 w +(Egreg) 1512 5448 w +(};) 1152 5568 w +(char* errstrings[] =) 1152 5688 w +({) 1152 5808 w +([Ealarm]) 1512 5928 w +("Alarm call",) 2232 5928 w +([Egreg]) 1512 6048 w +("Panic: out of mbufs",) 2232 6048 w +([Etoobig] "Arg list too long",) 1512 6168 w +(};) 1152 6288 w +10 /LucidaSansUnicode00 f +(In) 720 6468 w +(the) 851 6468 w +(same) 1046 6468 w +(way,) 1341 6468 w +(individual) 1597 6468 w +(structures) 2110 6468 w +(members) 2639 6468 w +(may) 3132 6468 w +(be) 3372 6468 w +(initialized) 3531 6468 w +(in) 4046 6468 w +(any) 4178 6468 w +(order) 4388 6468 w +(by) 4691 6468 w +(pre\255) 4847 6468 w +(ceding) 720 6588 w +(the initialization with) 1076 6588 w +10 /LucidaTypewriter f +(.tagname) 2132 6588 w +10 /LucidaSansUnicode00 f +(.) 2708 6588 w +(Both forms allow an optional) 2804 6588 w +10 /LucidaTypewriter f +(=) 4230 6588 w +10 /LucidaSansUnicode00 f +(, to be compat\255) 4302 6588 w +(ible with a proposed extension to ANSI C.) 720 6708 w cleartomark showpage saveobj restore @@ -4617,595 +4564,546 @@ 4 pagesetup 10 /LucidaSansUnicode00 f (\255 4 \255) 2783 480 w -(one-per-system) 720 840 w -(\(external\).) 1550 840 w -(It) 2112 840 w -(is) 2213 840 w -(used) 2328 840 w -(for) 2595 840 w -(two) 2770 840 w -(variables) 2981 840 w -(in) 3448 840 w -(the) 3575 840 w -(Plan) 3766 840 w -(9) 4003 840 w -(kernel,) 4102 840 w -10 /LucidaTypewriter f -(u) 4472 840 w -10 /LucidaSansUnicode00 f -(and) 4580 840 w -10 /LucidaTypewriter f -(m) 4796 840 w -10 /LucidaSansUnicode00 f -(.) 4868 840 w -10 /LucidaTypewriter f -(U) 4968 840 w -10 /LucidaSansUnicode00 f -(is) 720 960 w -(a) 858 960 w -(pointer) 971 960 w -(to) 1378 960 w -(the) 1534 960 w -(structure) 1746 960 w -(representing) 2241 960 w -(the) 2914 960 w -(currently) 3126 960 w -(running) 3614 960 w -(process) 4051 960 w -(and) 4482 960 w -10 /LucidaTypewriter f -(m) 4719 960 w -10 /LucidaSansUnicode00 f -(is) 4848 960 w -(a) 4985 960 w -(pointer to the per-machine data structure.) 720 1080 w 10 /LucidaSans-Demi f -(3.7.) 720 1320 w -(Long long) 962 1320 w -10 /LucidaSansUnicode00 f -(The) 720 1476 w -(compilers) 935 1476 w -(accept) 1443 1476 w -10 /LucidaTypewriter f -(long) 1790 1476 w -(long) 2112 1476 w -10 /LucidaSansUnicode00 f -(as) 2434 1476 w -(a) 2574 1476 w -(basic) 2663 1476 w -(type) 2946 1476 w -(meaning) 3188 1476 w -(64-bit) 3641 1476 w -(integer.) 3988 1476 w -(On) 4429 1476 w -(all) 4604 1476 w -(of) 4752 1476 w -(the) 4885 1476 w -(machines this type is synthesized from 32-bit instructions.) 720 1596 w +(3.6.) 720 840 w +(External register) 962 840 w +10 /LucidaSansUnicode00 f +(The) 720 996 w +(declaration) 945 996 w +10 /LucidaTypewriter f +(extern) 1528 996 w +(register) 2004 996 w +10 /LucidaSansUnicode00 f +(will) 2624 996 w +(dedicate) 2832 996 w +(a) 3287 996 w +(register) 3387 996 w +(to) 3805 996 w +(a) 3948 996 w +(variable) 4048 996 w +(on) 4473 996 w +(a) 4641 996 w +(global) 4741 996 w +(basis.) 720 1116 w +(It) 1067 1116 w +(can) 1167 1116 w +(be) 1369 1116 w +(used) 1522 1116 w +(only) 1788 1116 w +(under) 2026 1116 w +(special) 2344 1116 w +(circumstances.) 2712 1116 w +(External) 3499 1116 w +(register) 3927 1116 w +(variables) 4333 1116 w +(must) 4797 1116 w +(be) 720 1236 w +(identically) 875 1236 w +(declared) 1403 1236 w +(in) 1853 1236 w +(all) 1980 1236 w +(modules) 2130 1236 w +(and) 2582 1236 w +(libraries.) 2799 1236 w +(The) 3294 1236 w +(feature) 3512 1236 w +(is) 3893 1236 w +(not) 4010 1236 w +(intended) 4207 1236 w +(for) 4672 1236 w +(effi\255) 4848 1236 w +(ciency,) 720 1356 w +(although) 1107 1356 w +(it) 1591 1356 w +(can) 1711 1356 w +(produce) 1933 1356 w +(efficient) 2384 1356 w +(code;) 2832 1356 w +(rather) 3149 1356 w +(it) 3495 1356 w +(represents) 3615 1356 w +(a) 4182 1356 w +(unique) 4290 1356 w +(storage) 4677 1356 w +(class) 720 1476 w +(that) 998 1476 w +(would) 1230 1476 w +(be) 1563 1476 w +(hard) 1723 1476 w +(to) 1985 1476 w +(get) 2124 1476 w +(any) 2321 1476 w +(other) 2532 1476 w +(way.) 2831 1476 w +(On) 3121 1476 w +(a) 3303 1476 w +(shared-memory) 3400 1476 w +(multi-processor,) 4224 1476 w +(an) 720 1596 w +(external) 871 1596 w +(register) 1302 1596 w +(is) 1709 1596 w +(one-per-processor) 1823 1596 w +(and) 2788 1596 w +(neither) 3001 1596 w +(one-per-procedure) 3377 1596 w +(\(automatic\)) 4359 1596 w +(or) 4938 1596 w +(one-per-system) 720 1716 w +(\(external\).) 1550 1716 w +(It) 2112 1716 w +(is) 2213 1716 w +(used) 2328 1716 w +(for) 2595 1716 w +(two) 2770 1716 w +(variables) 2981 1716 w +(in) 3448 1716 w +(the) 3575 1716 w +(Plan) 3766 1716 w +(9) 4003 1716 w +(kernel,) 4102 1716 w +10 /LucidaTypewriter f +(u) 4472 1716 w +10 /LucidaSansUnicode00 f +(and) 4580 1716 w +10 /LucidaTypewriter f +(m) 4796 1716 w +10 /LucidaSansUnicode00 f +(.) 4868 1716 w +10 /LucidaTypewriter f +(U) 4968 1716 w +10 /LucidaSansUnicode00 f +(is) 720 1836 w +(a) 858 1836 w +(pointer) 971 1836 w +(to) 1378 1836 w +(the) 1534 1836 w +(structure) 1746 1836 w +(representing) 2241 1836 w +(the) 2914 1836 w +(currently) 3126 1836 w +(running) 3614 1836 w +(process) 4051 1836 w +(and) 4482 1836 w +10 /LucidaTypewriter f +(m) 4719 1836 w +10 /LucidaSansUnicode00 f +(is) 4848 1836 w +(a) 4985 1836 w +(pointer to the per-machine data structure.) 720 1956 w 10 /LucidaSans-Demi f -(3.8.) 720 1836 w -(Pragma) 962 1836 w -10 /LucidaSansUnicode00 f -(The) 720 1992 w -(compilers) 938 1992 w -(accept) 1449 1992 w -10 /LucidaTypewriter f -(#pragma) 1799 1992 w -(lib) 2340 1992 w +(3.7.) 720 2196 w +(Long long) 962 2196 w +10 /LucidaSansUnicode00 f +(The) 720 2352 w +(compilers) 935 2352 w +(accept) 1443 2352 w +10 /LucidaTypewriter f +(long) 1790 2352 w +(long) 2112 2352 w +10 /LucidaSansUnicode00 f +(as) 2434 2352 w +(a) 2574 2352 w +(basic) 2663 2352 w +(type) 2946 2352 w +(meaning) 3188 2352 w +(64-bit) 3641 2352 w +(integer.) 3988 2352 w +(On) 4429 2352 w +(all) 4604 2352 w +(of) 4752 2352 w +(the) 4885 2352 w +(machines this type is synthesized from 32-bit instructions.) 720 2472 w +10 /LucidaSans-Demi f +(3.8.) 720 2712 w +(Pragma) 962 2712 w +10 /LucidaSansUnicode00 f +(The) 720 2868 w +(compilers) 938 2868 w +(accept) 1449 2868 w +10 /LucidaTypewriter f +(#pragma) 1799 2868 w +(lib) 2340 2868 w 10 /LucidaSans-Italic f -(libname) 2593 1992 w -10 /LucidaSansUnicode00 f -(and) 3018 1992 w -(pass) 3235 1992 w -(the) 3493 1992 w -(library) 3686 1992 w -(name) 4034 1992 w -(string) 4338 1992 w -(uninter\255) 4658 1992 w -(preted) 720 2112 w -(to) 1078 2112 w -(the) 1218 2112 w -(loader.) 1415 2112 w -(The) 1826 2112 w -(loader) 2049 2112 w -(uses) 2396 2112 w -(the) 2658 2112 w -(library) 2855 2112 w -(name) 3207 2112 w -(to) 3515 2112 w -(find) 3655 2112 w -(libraries) 3888 2112 w -(to) 4324 2112 w -(load.) 4464 2112 w -(If) 4778 2112 w -(the) 4885 2112 w -(name) 720 2232 w -(contains) 1031 2232 w -10 /LucidaTypewriter f -(%O) 1484 2232 w -10 /LucidaSansUnicode00 f -(,) 1628 2232 w -(it) 1705 2232 w -(is) 1816 2232 w -(replaced) 1941 2232 w -(with) 2400 2232 w -(the) 2650 2232 w -(single) 2850 2232 w -(character) 3184 2232 w -(object) 3678 2232 w -(type) 4021 2232 w -(of) 4274 2232 w -(the) 4417 2232 w -(compiler) 4617 2232 w -(\(e.g.,) 720 2352 w -10 /LucidaTypewriter f -(v) 1006 2352 w -10 /LucidaSansUnicode00 f -(for) 1116 2352 w -(the) 1293 2352 w -(MIPS\).) 1486 2352 w -(If) 1845 2352 w -(the) 1949 2352 w -(name) 2142 2352 w -(contains) 2446 2352 w -10 /LucidaTypewriter f -(%M) 2892 2352 w -10 /LucidaSansUnicode00 f -(,) 3036 2352 w -(it) 3106 2352 w -(is) 3210 2352 w -(replaced) 3328 2352 w -(with) 3780 2352 w -(the) 4023 2352 w -(architecture) 4216 2352 w -(type) 4832 2352 w -(for) 720 2472 w -(the) 902 2472 w -(compiler) 1100 2472 w -(\(e.g.,) 1566 2472 w -10 /LucidaTypewriter f -(mips) 1856 2472 w -10 /LucidaSansUnicode00 f -(for) 2187 2472 w -(the) 2369 2472 w -(MIPS\).) 2567 2472 w -(If) 2931 2472 w -(the) 3041 2472 w -(name) 3240 2472 w -(starts) 3550 2472 w -(with) 3866 2472 w -10 /LucidaTypewriter f -(/) 4115 2472 w -10 /LucidaSansUnicode00 f -(it) 4231 2472 w -(is) 4341 2472 w -(an) 4465 2472 w -(absolute) 4626 2472 w -(pathname;) 720 2592 w -(if) 1285 2592 w -(it) 1401 2592 w -(starts) 1517 2592 w -(with) 1839 2592 w -10 /LucidaTypewriter f -(.) 2094 2592 w -10 /LucidaSansUnicode00 f -(then) 2215 2592 w -(it) 2481 2592 w -(is) 2596 2592 w -(searched) 2725 2592 w -(for) 3209 2592 w -(in) 3397 2592 w -(the) 3537 2592 w -(loader) 3741 2592 w +(libname) 2593 2868 w +10 /LucidaSansUnicode00 f +(and) 3018 2868 w +(pass) 3235 2868 w +(the) 3493 2868 w +(library) 3686 2868 w +(name) 4034 2868 w +(string) 4338 2868 w +(uninter\255) 4658 2868 w +(preted) 720 2988 w +(to) 1078 2988 w +(the) 1218 2988 w +(loader.) 1415 2988 w +(The) 1826 2988 w +(loader) 2049 2988 w +(uses) 2396 2988 w +(the) 2658 2988 w +(library) 2855 2988 w +(name) 3207 2988 w +(to) 3515 2988 w +(find) 3655 2988 w +(libraries) 3888 2988 w +(to) 4324 2988 w +(load.) 4464 2988 w +(If) 4778 2988 w +(the) 4885 2988 w +(name) 720 3108 w +(contains) 1031 3108 w +10 /LucidaTypewriter f +($O) 1484 3108 w +10 /LucidaSansUnicode00 f +(,) 1628 3108 w +(it) 1705 3108 w +(is) 1816 3108 w +(replaced) 1941 3108 w +(with) 2400 3108 w +(the) 2650 3108 w +(single) 2850 3108 w +(character) 3184 3108 w +(object) 3678 3108 w +(type) 4021 3108 w +(of) 4274 3108 w +(the) 4417 3108 w +(compiler) 4617 3108 w +(\(e.g.,) 720 3228 w +10 /LucidaTypewriter f +(v) 1006 3228 w +10 /LucidaSansUnicode00 f +(for) 1116 3228 w +(the) 1293 3228 w +(MIPS\).) 1486 3228 w +(If) 1845 3228 w +(the) 1949 3228 w +(name) 2142 3228 w +(contains) 2446 3228 w +10 /LucidaTypewriter f +($M) 2892 3228 w +10 /LucidaSansUnicode00 f +(,) 3036 3228 w +(it) 3106 3228 w +(is) 3210 3228 w +(replaced) 3328 3228 w +(with) 3780 3228 w +(the) 4023 3228 w +(architecture) 4216 3228 w +(type) 4832 3228 w +(for) 720 3348 w +(the) 902 3348 w +(compiler) 1100 3348 w +(\(e.g.,) 1566 3348 w +10 /LucidaTypewriter f +(mips) 1856 3348 w +10 /LucidaSansUnicode00 f +(for) 2187 3348 w +(the) 2369 3348 w +(MIPS\).) 2567 3348 w +(If) 2931 3348 w +(the) 3041 3348 w +(name) 3240 3348 w +(starts) 3550 3348 w +(with) 3866 3348 w +10 /LucidaTypewriter f +(/) 4115 3348 w +10 /LucidaSansUnicode00 f +(it) 4231 3348 w +(is) 4341 3348 w +(an) 4465 3348 w +(absolute) 4626 3348 w +(pathname;) 720 3468 w +(if) 1285 3468 w +(it) 1401 3468 w +(starts) 1517 3468 w +(with) 1839 3468 w +10 /LucidaTypewriter f +(.) 2094 3468 w +10 /LucidaSansUnicode00 f +(then) 2215 3468 w +(it) 2481 3468 w +(is) 2596 3468 w +(searched) 2725 3468 w +(for) 3209 3468 w +(in) 3397 3468 w +(the) 3537 3468 w +(loader) 3741 3468 w 10 /LucidaSansUnicode20 f -(\031) 4046 2592 w -10 /LucidaSansUnicode00 f -(s) 4078 2592 w -(current) 4178 2592 w -(directory.) 4577 2592 w -(Otherwise,) 720 2712 w -(the) 1272 2712 w -(name) 1461 2712 w -(is) 1761 2712 w -(searched) 1875 2712 w -(from) 2344 2712 w -10 /LucidaTypewriter f -(/%M/lib) 2610 2712 w -10 /LucidaSansUnicode00 f -(.) 3114 2712 w -(Such) 3212 2712 w -10 /LucidaTypewriter f -(#pragma) 3475 2712 w -10 /LucidaSansUnicode00 f -(statements) 4013 2712 w -(in) 4582 2712 w -(header) 4707 2712 w -(files) 720 2832 w -(guarantee) 968 2832 w -(that) 1500 2832 w -(the) 1737 2832 w -(correct) 1938 2832 w -(libraries) 2322 2832 w -(are) 2761 2832 w -(always) 2958 2832 w -(linked) 3322 2832 w -(with) 3664 2832 w -(a) 3914 2832 w -(program) 4014 2832 w -(without) 4475 2832 w -(the) 4885 2832 w -(need to specify them explicitly at link time.) 720 2952 w -(They) 720 3108 w -(also) 986 3108 w -(accept) 1215 3108 w -10 /LucidaTypewriter f -(#pragma) 1561 3108 w -(hjdicks) 2098 3108 w -(on) 2635 3108 w -10 /LucidaSansUnicode00 f -(\(or) 2813 3108 w -10 /LucidaTypewriter f -(yes) 2982 3108 w -10 /LucidaSansUnicode00 f -(or) 3232 3108 w -10 /LucidaTypewriter f -(1) 3368 3108 w -10 /LucidaSansUnicode00 f -(\)) 3440 3108 w -(to) 3507 3108 w -(cause) 3639 3108 w -(subsequently) 3948 3108 w -(declared) 4626 3108 w -(data,) 720 3228 w -(until) 1014 3228 w -10 /LucidaTypewriter f -(#pragma) 1285 3228 w -(hjdicks) 1841 3228 w -(off) 2397 3228 w -10 /LucidaSansUnicode00 f -(\(or) 2664 3228 w -10 /LucidaTypewriter f -(no) 2850 3228 w -10 /LucidaSansUnicode00 f -(or) 3045 3228 w -10 /LucidaTypewriter f -(0) 3198 3228 w -10 /LucidaSansUnicode00 f -(\),) 3270 3228 w -(to) 3386 3228 w -(be) 3535 3228 w -(laid) 3705 3228 w -(out) 3932 3228 w -(in) 4143 3228 w -(memory) 4285 3228 w -(tightly) 4732 3228 w -(packed) 720 3348 w -(in) 1121 3348 w -(successive) 1267 3348 w -(bytes,) 1833 3348 w -(disregarding) 2180 3348 w -(the) 2850 3348 w -(usual) 3061 3348 w -(alignment) 3376 3348 w -(rules.) 3917 3348 w -(Accessing) 4276 3348 w -(such) 4814 3348 w -(data can cause faults.) 720 3468 w -(Similarly,) 720 3624 w -10 /LucidaTypewriter f -(#pragma) 1211 3624 w -(profile) 1764 3624 w -(off) 2317 3624 w -10 /LucidaSansUnicode00 f -(\(or) 2582 3624 w -10 /LucidaTypewriter f -(no) 2766 3624 w -10 /LucidaSansUnicode00 f -(or) 2959 3624 w -10 /LucidaTypewriter f -(0) 3110 3624 w -10 /LucidaSansUnicode00 f -(\)) 3182 3624 w -(causes) 3264 3624 w -(subsequently) 3639 3624 w -(declared) 4332 3624 w -(func\255) 4795 3624 w -(tions,) 720 3744 w -(until) 1035 3744 w -10 /LucidaTypewriter f -(#pragma) 1297 3744 w -(profile) 1844 3744 w -(on) 2391 3744 w -10 /LucidaSansUnicode00 f -(\(or) 2578 3744 w -10 /LucidaTypewriter f -(yes) 2756 3744 w -10 /LucidaSansUnicode00 f -(or) 3015 3744 w -10 /LucidaTypewriter f -(1) 3160 3744 w -10 /LucidaSansUnicode00 f -(\),) 3232 3744 w -(to) 3340 3744 w -(be) 3481 3744 w -(marked) 3643 3744 w -(as) 4052 3744 w -(unprofiled.) 4201 3744 w -(Such) 4811 3744 w -(functions will not be profiled when profiling is enabled for the rest of the program.) 720 3864 w -(Two) 720 4020 w -10 /LucidaTypewriter f -(#pragma) 963 4020 w -10 /LucidaSansUnicode00 f -(statements) 1509 4020 w -(allow) 2086 4020 w -(type-checking) 2379 4020 w -(of) 3118 4020 w -10 /LucidaTypewriter f -(print) 3258 4020 w -10 /LucidaSansUnicode00 f -(-like) 3618 4020 w -(functions.) 3890 4020 w -(The) 4448 4020 w -(first,) 4672 4020 w -(of) 4942 4020 w -(the form) 720 4140 w +(\031) 4046 3468 w +10 /LucidaSansUnicode00 f +(s) 4078 3468 w +(current) 4178 3468 w +(directory.) 4577 3468 w +(Otherwise,) 720 3588 w +(the) 1272 3588 w +(name) 1461 3588 w +(is) 1761 3588 w +(searched) 1875 3588 w +(from) 2344 3588 w +10 /LucidaTypewriter f +(/$M/lib) 2610 3588 w +10 /LucidaSansUnicode00 f +(.) 3114 3588 w +(Such) 3212 3588 w +10 /LucidaTypewriter f +(#pragma) 3475 3588 w +10 /LucidaSansUnicode00 f +(statements) 4013 3588 w +(in) 4582 3588 w +(header) 4707 3588 w +(files) 720 3708 w +(guarantee) 968 3708 w +(that) 1500 3708 w +(the) 1737 3708 w +(correct) 1938 3708 w +(libraries) 2322 3708 w +(are) 2761 3708 w +(always) 2958 3708 w +(linked) 3322 3708 w +(with) 3664 3708 w +(a) 3914 3708 w +(program) 4014 3708 w +(without) 4475 3708 w +(the) 4885 3708 w +(need to specify them explicitly at link time.) 720 3828 w +(They) 720 3984 w +(also) 992 3984 w +(accept) 1227 3984 w +10 /LucidaTypewriter f +(#pragma) 1579 3984 w +(packed) 2122 3984 w +(on) 2593 3984 w +10 /LucidaSansUnicode00 f +(\(or) 2776 3984 w +10 /LucidaTypewriter f +(yes) 2950 3984 w +10 /LucidaSansUnicode00 f +(or) 3205 3984 w +10 /LucidaTypewriter f +(1) 3346 3984 w +10 /LucidaSansUnicode00 f +(\)) 3418 3984 w +(to) 3490 3984 w +(cause) 3627 3984 w +(subsequently) 3942 3984 w +(declared) 4626 3984 w +(data,) 720 4104 w +(until) 1019 4104 w +10 /LucidaTypewriter f +(#pragma) 1294 4104 w +(packed) 1854 4104 w +(off) 2342 4104 w +10 /LucidaSansUnicode00 f +(\(or) 2614 4104 w +10 /LucidaTypewriter f +(no) 2805 4104 w +10 /LucidaSansUnicode00 f +(or) 3005 4104 w +10 /LucidaTypewriter f +(0) 3163 4104 w +10 /LucidaSansUnicode00 f +(\),) 3235 4104 w +(to) 3356 4104 w +(be) 3510 4104 w +(laid) 3685 4104 w +(out) 3917 4104 w +(in) 4133 4104 w +(memory) 4280 4104 w +(tightly) 4732 4104 w +(packed) 720 4224 w +(in) 1121 4224 w +(successive) 1267 4224 w +(bytes,) 1833 4224 w +(disregarding) 2180 4224 w +(the) 2850 4224 w +(usual) 3061 4224 w +(alignment) 3376 4224 w +(rules.) 3917 4224 w +(Accessing) 4276 4224 w +(such) 4814 4224 w +(data can cause faults.) 720 4344 w +(Similarly,) 720 4500 w +10 /LucidaTypewriter f +(#pragma) 1211 4500 w +(profile) 1764 4500 w +(off) 2317 4500 w +10 /LucidaSansUnicode00 f +(\(or) 2582 4500 w +10 /LucidaTypewriter f +(no) 2766 4500 w +10 /LucidaSansUnicode00 f +(or) 2959 4500 w +10 /LucidaTypewriter f +(0) 3110 4500 w +10 /LucidaSansUnicode00 f +(\)) 3182 4500 w +(causes) 3264 4500 w +(subsequently) 3639 4500 w +(declared) 4332 4500 w +(func\255) 4795 4500 w +(tions,) 720 4620 w +(until) 1035 4620 w +10 /LucidaTypewriter f +(#pragma) 1297 4620 w +(profile) 1844 4620 w +(on) 2391 4620 w +10 /LucidaSansUnicode00 f +(\(or) 2578 4620 w +10 /LucidaTypewriter f +(yes) 2756 4620 w +10 /LucidaSansUnicode00 f +(or) 3015 4620 w +10 /LucidaTypewriter f +(1) 3160 4620 w +10 /LucidaSansUnicode00 f +(\),) 3232 4620 w +(to) 3340 4620 w +(be) 3481 4620 w +(marked) 3643 4620 w +(as) 4052 4620 w +(unprofiled.) 4201 4620 w +(Such) 4811 4620 w +(functions will not be profiled when profiling is enabled for the rest of the program.) 720 4740 w +(Two) 720 4896 w +10 /LucidaTypewriter f +(#pragma) 963 4896 w +10 /LucidaSansUnicode00 f +(statements) 1509 4896 w +(allow) 2086 4896 w +(type-checking) 2379 4896 w +(of) 3118 4896 w +10 /LucidaTypewriter f +(print) 3258 4896 w +10 /LucidaSansUnicode00 f +(-like) 3618 4896 w +(functions.) 3890 4896 w +(The) 4448 4896 w +(first,) 4672 4896 w +(of) 4942 4896 w +(the form) 720 5016 w 9 /LucidaTypewriter f -(#pragma) 1008 4310 w -(varargck) 1528 4310 w -(argpos) 2113 4310 w -(error) 2568 4310 w -(2) 2958 4310 w -10 /LucidaSansUnicode00 f -(tells) 720 4490 w -(the) 966 4490 w -(compiler) 1165 4490 w -(that) 1632 4490 w -(the) 1868 4490 w -(second) 2068 4490 w -(argument) 2457 4490 w -(to) 2970 4490 w -10 /LucidaTypewriter f -(error) 3113 4490 w -10 /LucidaSansUnicode00 f -(is) 3518 4490 w -(a) 3643 4490 w -10 /LucidaTypewriter f -(print) 3743 4490 w -10 /LucidaSansUnicode00 f -(format) 4148 4490 w -(string) 4517 4490 w -(\(see) 4844 4490 w -(the) 720 4610 w -(manual) 910 4610 w -(page) 1301 4610 w +(#pragma) 920 5186 w +(varargck) 1440 5186 w +(argpos) 2025 5186 w +(error) 2480 5186 w +(2) 2870 5186 w +10 /LucidaSansUnicode00 f +(tells) 720 5366 w +(the) 966 5366 w +(compiler) 1165 5366 w +(that) 1632 5366 w +(the) 1868 5366 w +(second) 2068 5366 w +(argument) 2457 5366 w +(to) 2970 5366 w +10 /LucidaTypewriter f +(error) 3113 5366 w +10 /LucidaSansUnicode00 f +(is) 3518 5366 w +(a) 3643 5366 w +10 /LucidaTypewriter f +(print) 3743 5366 w +10 /LucidaSansUnicode00 f +(format) 4148 5366 w +(string) 4517 5366 w +(\(see) 4844 5366 w +(the) 720 5486 w +(manual) 910 5486 w +(page) 1301 5486 w 10 /LucidaSans-Italic f -(print) 1572 4610 w -10 /LucidaSansUnicode00 f -(\(2\)\)) 1810 4610 w -(that) 2007 4610 w -(specifies) 2233 4610 w -(how) 2691 4610 w -(to) 2925 4610 w -(format) 3057 4610 w -10 /LucidaTypewriter f -(error) 3415 4610 w +(print) 1572 5486 w +10 /LucidaSansUnicode00 f +(\(2\)\)) 1810 5486 w +(that) 2007 5486 w +(specifies) 2233 5486 w +(how) 2691 5486 w +(to) 2925 5486 w +(format) 3057 5486 w +10 /LucidaTypewriter f +(error) 3415 5486 w 10 /LucidaSansUnicode20 f -(\031) 3775 4610 w -10 /LucidaSansUnicode00 f -(s) 3807 4610 w -(subsequent) 3892 4610 w -(arguments.) 4489 4610 w -(The second, of the form) 720 4730 w +(\031) 3775 5486 w +10 /LucidaSansUnicode00 f +(s) 3807 5486 w +(subsequent) 3892 5486 w +(arguments.) 4489 5486 w +(The second, of the form) 720 5606 w 9 /LucidaTypewriter f -(#pragma) 1008 4900 w -(varargck) 1528 4900 w -(type) 2113 4900 w -("s") 2438 4900 w -(char*) 2698 4900 w -10 /LucidaSansUnicode00 f -(says) 720 5080 w -(that) 984 5080 w -(the) 1230 5080 w -10 /LucidaTypewriter f -(print) 1440 5080 w -10 /LucidaSansUnicode00 f -(format) 1855 5080 w -(verb) 2235 5080 w -10 /LucidaTypewriter f -(s) 2503 5080 w -10 /LucidaSansUnicode00 f -(processes) 2631 5080 w -(an) 3168 5080 w -(argument) 3341 5080 w -(of) 3865 5080 w -(type) 4019 5080 w -10 /LucidaTypewriter f -(char*) 4283 5080 w -10 /LucidaSansUnicode00 f -(.) 4643 5080 w -(If) 4763 5080 w -(the) 4885 5080 w -(compiler) 720 5200 w +(#pragma) 920 5776 w +(varargck) 1440 5776 w +(type) 2025 5776 w +("s") 2350 5776 w +(char*) 2610 5776 w +10 /LucidaSansUnicode00 f +(says) 720 5956 w +(that) 984 5956 w +(the) 1230 5956 w +10 /LucidaTypewriter f +(print) 1440 5956 w +10 /LucidaSansUnicode00 f +(format) 1855 5956 w +(verb) 2235 5956 w +10 /LucidaTypewriter f +(s) 2503 5956 w +10 /LucidaSansUnicode00 f +(processes) 2631 5956 w +(an) 3168 5956 w +(argument) 3341 5956 w +(of) 3865 5956 w +(type) 4019 5956 w +10 /LucidaTypewriter f +(char*) 4283 5956 w +10 /LucidaSansUnicode00 f +(.) 4643 5956 w +(If) 4763 5956 w +(the) 4885 5956 w +(compiler) 720 6076 w 10 /LucidaSansUnicode20 f -(\031) 1143 5200 w -10 /LucidaSansUnicode00 f -(s) 1175 5200 w -10 /LucidaTypewriter f -(-F) 1273 5200 w -10 /LucidaSansUnicode00 f -(option) 1463 5200 w -(is) 1822 5200 w -(enabled,) 1948 5200 w -(the) 2410 5200 w -(compiler) 2611 5200 w -(will) 3080 5200 w -(use) 3290 5200 w -(this) 3505 5200 w -(information) 3730 5200 w -(to) 4343 5200 w -(report) 4487 5200 w -(type) 4832 5200 w -(violations in the arguments to) 720 5320 w -10 /LucidaTypewriter f -(print) 2209 5320 w -10 /LucidaSansUnicode00 f -(,) 2569 5320 w -10 /LucidaTypewriter f -(error) 2633 5320 w -10 /LucidaSansUnicode00 f -(, and similar routines.) 2993 5320 w +(\031) 1143 6076 w +10 /LucidaSansUnicode00 f +(s) 1175 6076 w +10 /LucidaTypewriter f +(-F) 1273 6076 w +10 /LucidaSansUnicode00 f +(option) 1463 6076 w +(is) 1822 6076 w +(enabled,) 1948 6076 w +(the) 2410 6076 w +(compiler) 2611 6076 w +(will) 3080 6076 w +(use) 3290 6076 w +(this) 3505 6076 w +(information) 3730 6076 w +(to) 4343 6076 w +(report) 4487 6076 w +(type) 4832 6076 w +(violations in the arguments to) 720 6196 w +10 /LucidaTypewriter f +(print) 2209 6196 w +10 /LucidaSansUnicode00 f +(,) 2569 6196 w +10 /LucidaTypewriter f +(error) 2633 6196 w +10 /LucidaSansUnicode00 f +(, and similar routines.) 2993 6196 w 10 /LucidaSans-Demi f -(4.) 720 5560 w -(Object module conventions) 873 5560 w -10 /LucidaSansUnicode00 f -(The) 720 5716 w -(overall) 936 5716 w -(conventions) 1294 5716 w -(of) 1913 5716 w -(the) 2046 5716 w -(runtime) 2236 5716 w -(environment) 2651 5716 w -(are) 3297 5716 w -(important) 3484 5716 w -(to) 3998 5716 w -(runtime) 4132 5716 w -(efficiency.) 4548 5716 w -(In this section, several of these conventions are discussed.) 720 5836 w -10 /LucidaSans-Demi f -(4.1.) 720 6076 w -(Register saving) 962 6076 w -10 /LucidaSansUnicode00 f -(In) 720 6232 w -(the) 846 6232 w -(Plan) 1037 6232 w -(9) 1274 6232 w -(compilers,) 1373 6232 w -(the) 1915 6232 w -(caller) 2106 6232 w -(of) 2403 6232 w -(a) 2537 6232 w -(procedure) 2628 6232 w -(saves) 3158 6232 w -(the) 3459 6232 w -(registers.) 3650 6232 w -(With) 4174 6232 w -(caller-saves,) 4424 6232 w -(the) 720 6352 w -(leaf) 912 6352 w -(procedures) 1126 6352 w -(can) 1708 6352 w -(use) 1913 6352 w -(all) 2119 6352 w -(the) 2269 6352 w -(registers) 2461 6352 w -(and) 2922 6352 w -(never) 3139 6352 w -(save) 3443 6352 w -(them.) 3694 6352 w -(If) 4043 6352 w -(you) 4146 6352 w -(spend) 4357 6352 w -(a) 4688 6352 w -(lot) 4779 6352 w -(of) 4942 6352 w -(time) 720 6472 w -(at) 972 6472 w -(the) 1101 6472 w -(leaves,) 1294 6472 w -(this) 1663 6472 w -(seems) 1880 6472 w -(preferable.) 2225 6472 w -(With) 2824 6472 w -(callee-saves,) 3076 6472 w -(the) 3745 6472 w -(saving) 3938 6472 w -(of) 4287 6472 w -(the) 4423 6472 w -(registers) 4616 6472 w -(is) 720 6592 w -(done) 833 6592 w -(in) 1108 6592 w -(the) 1232 6592 w -(single) 1420 6592 w -(point) 1742 6592 w -(of) 2027 6592 w -(entry) 2158 6592 w -(and) 2439 6592 w -(return.) 2652 6592 w -(If) 3048 6592 w -(you) 3147 6592 w -(are interested in space, this seems) 3355 6592 w -(preferable.) 720 6712 w -(In) 1328 6712 w -(both,) 1466 6712 w -(there) 1768 6712 w -(is) 2067 6712 w -(a) 2194 6712 w -(degree) 2296 6712 w -(of) 2677 6712 w -(uncertainty) 2822 6712 w -(about) 3413 6712 w -(what) 3739 6712 w -(registers) 4018 6712 w -(need) 4490 6712 w -(to) 4775 6712 w -(be) 4921 6712 w -(saved.) 720 6832 w -(Callee-saved) 1108 6832 w -(registers) 1784 6832 w -(make) 2255 6832 w -(it) 2564 6832 w -(difficult) 2677 6832 w -(to) 3098 6832 w -(find) 3243 6832 w -(variables) 3480 6832 w -(in) 3957 6832 w -(registers) 4094 6832 w -(in) 4564 6832 w -(debug\255) 4701 6832 w -(gers.) 720 6952 w -(Callee-saved) 1050 6952 w -(registers) 1735 6952 w -(also) 2215 6952 w -(complicate) 2467 6952 w -(the) 3048 6952 w -(implementation) 3260 6952 w -(of) 4079 6952 w -10 /LucidaTypewriter f -(longjmp) 4234 6952 w -10 /LucidaSansUnicode00 f -(.) 4738 6952 w -(The) 4859 6952 w -(convincing) 720 7072 w -(argument) 1280 7072 w -(is) 1787 7072 w -(that) 1906 7072 w -(with) 2136 7072 w -(caller-saves,) 2380 7072 w -(the) 3035 7072 w -(decision) 3229 7072 w -(to) 3670 7072 w -(registerize) 3807 7072 w -(a) 4361 7072 w -(variable) 4454 7072 w -(can) 4872 7072 w -(include) 720 7192 w -(the) 1115 7192 w -(cost) 1313 7192 w -(of) 1556 7192 w -(saving) 1698 7192 w -(the) 2053 7192 w -(register) 2252 7192 w -(across) 2669 7192 w -(calls.) 3023 7192 w -(For) 3346 7192 w -(a) 3546 7192 w -(further) 3645 7192 w -(discussion) 4025 7192 w -(of) 4579 7192 w -(caller-) 4721 7192 w -(vs. callee-saves, see the paper by Davidson and Whalley [Dav91].) 720 7312 w +(4.) 720 6436 w +(Object module conventions) 873 6436 w +10 /LucidaSansUnicode00 f +(The) 720 6592 w +(overall) 936 6592 w +(conventions) 1294 6592 w +(of) 1913 6592 w +(the) 2046 6592 w +(runtime) 2236 6592 w +(environment) 2651 6592 w +(are) 3297 6592 w +(important) 3484 6592 w +(to) 3998 6592 w +(runtime) 4132 6592 w +(efficiency.) 4548 6592 w +(In this section, several of these conventions are discussed.) 720 6712 w cleartomark showpage saveobj restore @@ -5216,356 +5114,440 @@ 5 pagesetup 10 /LucidaSansUnicode00 f (\255 5 \255) 2783 480 w -(In) 720 840 w -(the) 863 840 w -(Plan) 1070 840 w -(9) 1323 840 w -(operating) 1439 840 w -(system,) 1958 840 w -(calls) 2383 840 w -(to) 2651 840 w -(the) 2802 840 w -(kernel) 3010 840 w -(look) 3365 840 w -(like) 3627 840 w -(normal) 3852 840 w -(procedure) 4246 840 w -(calls,) 4793 840 w -(which) 720 960 w -(means) 1042 960 w -(the) 1400 960 w -(caller) 1596 960 w -(has) 1898 960 w -(saved) 2107 960 w -(the) 2425 960 w -(registers) 2621 960 w -(and) 3086 960 w -(the) 3307 960 w -(system) 3503 960 w -(entry) 3884 960 w -(does) 4173 960 w -(not) 4445 960 w -(have) 4645 960 w -(to.) 4910 960 w -(This) 720 1080 w -(makes) 963 1080 w -(system) 1314 1080 w -(calls) 1692 1080 w -(considerably) 1945 1080 w -(faster.) 2596 1080 w -(Since) 2975 1080 w -(this) 3265 1080 w -(is) 3482 1080 w -(a) 3601 1080 w -(potential) 3695 1080 w -(security) 4163 1080 w -(hole,) 4581 1080 w -(and) 4860 1080 w -(can) 720 1200 w -(lead) 926 1200 w -(to) 1167 1200 w -(non-determinism,) 1302 1200 w -(the) 2224 1200 w -(system) 2416 1200 w -(may) 2793 1200 w -(eventually) 3030 1200 w -(save) 3557 1200 w -(the) 3808 1200 w -(registers) 4000 1200 w -(on) 4461 1200 w -(entry,) 4621 1200 w -(or) 4938 1200 w -(more likely clear the registers on return.) 720 1320 w 10 /LucidaSans-Demi f -(4.2.) 720 1560 w -(Calling convention) 962 1560 w -10 /LucidaSansUnicode00 f -(Older) 720 1716 w -(C) 1030 1716 w -(compilers) 1143 1716 w -(maintain) 1661 1716 w -(a) 2127 1716 w -(frame) 2226 1716 w -(pointer,) 2552 1716 w -(which) 2977 1716 w -(is) 3302 1716 w -(at) 3426 1716 w -(a) 3562 1716 w -(known) 3661 1716 w -(constant) 4025 1716 w -(offset) 4485 1716 w -(from) 4808 1716 w -(the) 720 1836 w -(stack) 924 1836 w -(pointer) 1225 1836 w -(within) 1623 1836 w -(each) 1968 1836 w -(function.) 2241 1836 w -(For) 2755 1836 w -(machines) 2960 1836 w -(where) 3468 1836 w -(the) 3809 1836 w -(stack) 4013 1836 w -(grows) 4314 1836 w -(towards) 4655 1836 w -(zero,) 720 1956 w -(the) 1004 1956 w -(argument) 1196 1956 w -(pointer) 1701 1956 w -(is) 2087 1956 w -(at) 2204 1956 w -(a) 2333 1956 w -(known) 2425 1956 w -(constant) 2783 1956 w -(offset) 3237 1956 w -(from) 3554 1956 w -(the) 3824 1956 w -(frame) 4017 1956 w -(pointer.) 4337 1956 w -(Since) 4788 1956 w -(the) 720 2076 w -(stack) 925 2076 w -(grows) 1227 2076 w -(down) 1569 2076 w -(in) 1882 2076 w -(Plan) 2023 2076 w -(9,) 2274 2076 w -(the) 2419 2076 w -(Plan) 2624 2076 w -(9) 2875 2076 w -(compilers) 2988 2076 w -(keep) 3512 2076 w -(neither) 3795 2076 w -(an) 4188 2076 w -(explicit) 4354 2076 w -(frame) 4758 2076 w -(pointer) 720 2196 w -(nor) 1102 2196 w -(an) 1299 2196 w -(explicit) 1450 2196 w -(argument) 1839 2196 w -(pointer;) 2341 2196 w -(instead) 2756 2196 w -(they) 3143 2196 w -(generate) 3384 2196 w -(addresses) 3843 2196 w -(relative) 4364 2196 w -(to) 4753 2196 w -(the) 4885 2196 w -(stack pointer.) 720 2316 w -(On some architectures, the first argument to a subroutine is passed in a register.) 720 2472 w +(4.1.) 720 840 w +(Register saving) 962 840 w +10 /LucidaSansUnicode00 f +(In) 720 996 w +(the) 846 996 w +(Plan) 1037 996 w +(9) 1274 996 w +(compilers,) 1373 996 w +(the) 1915 996 w +(caller) 2106 996 w +(of) 2403 996 w +(a) 2537 996 w +(procedure) 2628 996 w +(saves) 3158 996 w +(the) 3459 996 w +(registers.) 3650 996 w +(With) 4174 996 w +(caller-saves,) 4424 996 w +(the) 720 1116 w +(leaf) 912 1116 w +(procedures) 1126 1116 w +(can) 1708 1116 w +(use) 1913 1116 w +(all) 2119 1116 w +(the) 2269 1116 w +(registers) 2461 1116 w +(and) 2922 1116 w +(never) 3139 1116 w +(save) 3443 1116 w +(them.) 3694 1116 w +(If) 4043 1116 w +(you) 4146 1116 w +(spend) 4357 1116 w +(a) 4688 1116 w +(lot) 4779 1116 w +(of) 4942 1116 w +(time) 720 1236 w +(at) 972 1236 w +(the) 1101 1236 w +(leaves,) 1294 1236 w +(this) 1663 1236 w +(seems) 1880 1236 w +(preferable.) 2225 1236 w +(With) 2824 1236 w +(callee-saves,) 3076 1236 w +(the) 3745 1236 w +(saving) 3938 1236 w +(of) 4287 1236 w +(the) 4423 1236 w +(registers) 4616 1236 w +(is) 720 1356 w +(done) 833 1356 w +(in) 1108 1356 w +(the) 1232 1356 w +(single) 1420 1356 w +(point) 1742 1356 w +(of) 2027 1356 w +(entry) 2158 1356 w +(and) 2439 1356 w +(return.) 2652 1356 w +(If) 3048 1356 w +(you) 3147 1356 w +(are interested in space, this seems) 3355 1356 w +(preferable.) 720 1476 w +(In) 1328 1476 w +(both,) 1466 1476 w +(there) 1768 1476 w +(is) 2067 1476 w +(a) 2194 1476 w +(degree) 2296 1476 w +(of) 2677 1476 w +(uncertainty) 2822 1476 w +(about) 3413 1476 w +(what) 3739 1476 w +(registers) 4018 1476 w +(need) 4490 1476 w +(to) 4775 1476 w +(be) 4921 1476 w +(saved.) 720 1596 w +(Callee-saved) 1108 1596 w +(registers) 1784 1596 w +(make) 2255 1596 w +(it) 2564 1596 w +(difficult) 2677 1596 w +(to) 3098 1596 w +(find) 3243 1596 w +(variables) 3480 1596 w +(in) 3957 1596 w +(registers) 4094 1596 w +(in) 4564 1596 w +(debug\255) 4701 1596 w +(gers.) 720 1716 w +(Callee-saved) 1050 1716 w +(registers) 1735 1716 w +(also) 2215 1716 w +(complicate) 2467 1716 w +(the) 3048 1716 w +(implementation) 3260 1716 w +(of) 4079 1716 w +10 /LucidaTypewriter f +(longjmp) 4234 1716 w +10 /LucidaSansUnicode00 f +(.) 4738 1716 w +(The) 4859 1716 w +(convincing) 720 1836 w +(argument) 1280 1836 w +(is) 1787 1836 w +(that) 1906 1836 w +(with) 2136 1836 w +(caller-saves,) 2380 1836 w +(the) 3035 1836 w +(decision) 3229 1836 w +(to) 3670 1836 w +(registerize) 3807 1836 w +(a) 4361 1836 w +(variable) 4454 1836 w +(can) 4872 1836 w +(include) 720 1956 w +(the) 1115 1956 w +(cost) 1313 1956 w +(of) 1556 1956 w +(saving) 1698 1956 w +(the) 2053 1956 w +(register) 2252 1956 w +(across) 2669 1956 w +(calls.) 3023 1956 w +(For) 3346 1956 w +(a) 3546 1956 w +(further) 3645 1956 w +(discussion) 4025 1956 w +(of) 4579 1956 w +(caller-) 4721 1956 w +(vs. callee-saves, see the paper by Davidson and Whalley [Dav91].) 720 2076 w +(In) 720 2232 w +(the) 863 2232 w +(Plan) 1070 2232 w +(9) 1323 2232 w +(operating) 1439 2232 w +(system,) 1958 2232 w +(calls) 2383 2232 w +(to) 2651 2232 w +(the) 2802 2232 w +(kernel) 3010 2232 w +(look) 3365 2232 w +(like) 3627 2232 w +(normal) 3852 2232 w +(procedure) 4246 2232 w +(calls,) 4793 2232 w +(which) 720 2352 w +(means) 1042 2352 w +(the) 1400 2352 w +(caller) 1596 2352 w +(has) 1898 2352 w +(saved) 2107 2352 w +(the) 2425 2352 w +(registers) 2621 2352 w +(and) 3086 2352 w +(the) 3307 2352 w +(system) 3503 2352 w +(entry) 3884 2352 w +(does) 4173 2352 w +(not) 4445 2352 w +(have) 4645 2352 w +(to.) 4910 2352 w +(This) 720 2472 w +(makes) 963 2472 w +(system) 1314 2472 w +(calls) 1692 2472 w +(considerably) 1945 2472 w +(faster.) 2596 2472 w +(Since) 2975 2472 w +(this) 3265 2472 w +(is) 3482 2472 w +(a) 3601 2472 w +(potential) 3695 2472 w +(security) 4163 2472 w +(hole,) 4581 2472 w +(and) 4860 2472 w +(can) 720 2592 w +(lead) 926 2592 w +(to) 1167 2592 w +(non-determinism,) 1302 2592 w +(the) 2224 2592 w +(system) 2416 2592 w +(may) 2793 2592 w +(eventually) 3030 2592 w +(save) 3557 2592 w +(the) 3808 2592 w +(registers) 4000 2592 w +(on) 4461 2592 w +(entry,) 4621 2592 w +(or) 4938 2592 w +(more likely clear the registers on return.) 720 2712 w 10 /LucidaSans-Demi f -(4.3.) 720 2712 w -(Functions returning structures) 962 2712 w -10 /LucidaSansUnicode00 f -(Structures longer than one word are awkward to implement since they do not fit in regis\255) 720 2868 w -(ters) 720 2988 w -(and) 940 2988 w -(must) 1155 2988 w -(be) 1433 2988 w -(passed) 1587 2988 w -(around) 1961 2988 w -(in) 2340 2988 w -(memory.) 2466 2988 w -(Functions) 2961 2988 w -(that) 3464 2988 w -(return) 3689 2988 w -(structures) 4022 2988 w -(are) 4545 2988 w -(partic\255) 4731 2988 w -(ularly) 720 3108 w -(clumsy.) 1030 3108 w -(The) 1474 3108 w -(Plan) 1697 3108 w -(9) 1940 3108 w -(compilers) 2045 3108 w -(pass) 2561 3108 w -(the) 2823 3108 w -(return) 3020 3108 w -(address) 3361 3108 w -(of) 3783 3108 w -(a) 3923 3108 w -(structure) 4020 3108 w -(as) 4500 3108 w -(the) 4648 3108 w -(first) 4845 3108 w -(argument of a function that has a structure return value.) 720 3228 w -(Thus) 3531 3228 w -10 /LucidaTypewriter f -(x = f\(...\)) 1152 3408 w -10 /LucidaSansUnicode00 f -(is rewritten as) 720 3588 w -10 /LucidaTypewriter f -(f\(&x, ...\)) 1152 3768 w -10 /LucidaSansUnicode00 f -(.) 1872 3768 w -(This) 720 3948 w -(saves) 961 3948 w -(a) 1262 3948 w -(copy) 1353 3948 w -(and) 1616 3948 w -(makes) 1832 3948 w -(the) 2182 3948 w -(compilation) 2374 3948 w -(much) 2981 3948 w -(less) 3286 3948 w -(clumsy.) 3510 3948 w -(A) 3949 3948 w -(disadvantage) 4055 3948 w -(is) 4732 3948 w -(that) 4849 3948 w -(if you call this function without an assignment, a dummy location must be invented.) 720 4068 w -(There) 720 4224 w -(is) 1037 4224 w -(also) 1156 4224 w -(a) 1391 4224 w -(danger) 1485 4224 w -(of) 1863 4224 w -(calling) 2000 4224 w -(a) 2356 4224 w -(function) 2450 4224 w -(that) 2890 4224 w -(returns) 3120 4224 w -(a) 3509 4224 w -(structure) 3603 4224 w -(without) 4081 4224 w -(declaring) 4486 4224 w -(it) 4974 4224 w -(as such.) 720 4344 w -(With ANSI C function prototypes, this error need never occur.) 1180 4344 w +(4.2.) 720 2952 w +(Calling convention) 962 2952 w +10 /LucidaSansUnicode00 f +(Older) 720 3108 w +(C) 1030 3108 w +(compilers) 1143 3108 w +(maintain) 1661 3108 w +(a) 2127 3108 w +(frame) 2226 3108 w +(pointer,) 2552 3108 w +(which) 2977 3108 w +(is) 3302 3108 w +(at) 3426 3108 w +(a) 3562 3108 w +(known) 3661 3108 w +(constant) 4025 3108 w +(offset) 4485 3108 w +(from) 4808 3108 w +(the) 720 3228 w +(stack) 924 3228 w +(pointer) 1225 3228 w +(within) 1623 3228 w +(each) 1968 3228 w +(function.) 2241 3228 w +(For) 2755 3228 w +(machines) 2960 3228 w +(where) 3468 3228 w +(the) 3809 3228 w +(stack) 4013 3228 w +(grows) 4314 3228 w +(towards) 4655 3228 w +(zero,) 720 3348 w +(the) 1004 3348 w +(argument) 1196 3348 w +(pointer) 1701 3348 w +(is) 2087 3348 w +(at) 2204 3348 w +(a) 2333 3348 w +(known) 2425 3348 w +(constant) 2783 3348 w +(offset) 3237 3348 w +(from) 3554 3348 w +(the) 3824 3348 w +(frame) 4017 3348 w +(pointer.) 4337 3348 w +(Since) 4788 3348 w +(the) 720 3468 w +(stack) 925 3468 w +(grows) 1227 3468 w +(down) 1569 3468 w +(in) 1882 3468 w +(Plan) 2023 3468 w +(9,) 2274 3468 w +(the) 2419 3468 w +(Plan) 2624 3468 w +(9) 2875 3468 w +(compilers) 2988 3468 w +(keep) 3512 3468 w +(neither) 3795 3468 w +(an) 4188 3468 w +(explicit) 4354 3468 w +(frame) 4758 3468 w +(pointer) 720 3588 w +(nor) 1102 3588 w +(an) 1299 3588 w +(explicit) 1450 3588 w +(argument) 1839 3588 w +(pointer;) 2341 3588 w +(instead) 2756 3588 w +(they) 3143 3588 w +(generate) 3384 3588 w +(addresses) 3843 3588 w +(relative) 4364 3588 w +(to) 4753 3588 w +(the) 4885 3588 w +(stack pointer.) 720 3708 w +(On some architectures, the first argument to a subroutine is passed in a register.) 720 3864 w 10 /LucidaSans-Demi f -(5.) 720 4584 w -(Implementation) 873 4584 w -10 /LucidaSansUnicode00 f -(The) 720 4740 w -(compiler) 990 4740 w -(is) 1502 4740 w -(divided) 1671 4740 w -(internally) 2115 4740 w -(into) 2656 4740 w -(four) 2934 4740 w -(machine-independent) 3225 4740 w -(passes,) 4390 4740 w -(four) 4839 4740 w -(machine-dependent) 720 4860 w -(passes,) 1744 4860 w -(and) 2143 4860 w -(an) 2363 4860 w -(output) 2520 4860 w -(pass.) 2882 4860 w -(The) 3206 4860 w -(next) 3427 4860 w -(nine) 3682 4860 w -(sections) 3930 4860 w -(describe) 4367 4860 w -(each) 4816 4860 w -(pass in order.) 720 4980 w +(4.3.) 720 4104 w +(Functions returning structures) 962 4104 w +10 /LucidaSansUnicode00 f +(Structures longer than one word are awkward to implement since they do not fit in regis\255) 720 4260 w +(ters) 720 4380 w +(and) 940 4380 w +(must) 1155 4380 w +(be) 1433 4380 w +(passed) 1587 4380 w +(around) 1961 4380 w +(in) 2340 4380 w +(memory.) 2466 4380 w +(Functions) 2961 4380 w +(that) 3464 4380 w +(return) 3689 4380 w +(structures) 4022 4380 w +(are) 4545 4380 w +(partic\255) 4731 4380 w +(ularly) 720 4500 w +(clumsy.) 1030 4500 w +(The) 1474 4500 w +(Plan) 1697 4500 w +(9) 1940 4500 w +(compilers) 2045 4500 w +(pass) 2561 4500 w +(the) 2823 4500 w +(return) 3020 4500 w +(address) 3361 4500 w +(of) 3783 4500 w +(a) 3923 4500 w +(structure) 4020 4500 w +(as) 4500 4500 w +(the) 4648 4500 w +(first) 4845 4500 w +(argument of a function that has a structure return value.) 720 4620 w +(Thus) 3531 4620 w +10 /LucidaTypewriter f +(x = f\(...\)) 1152 4800 w +10 /LucidaSansUnicode00 f +(is rewritten as) 720 4980 w +10 /LucidaTypewriter f +(f\(&x, ...\)) 1152 5160 w +10 /LucidaSansUnicode00 f +(.) 1872 5160 w +(This) 720 5340 w +(saves) 961 5340 w +(a) 1262 5340 w +(copy) 1353 5340 w +(and) 1616 5340 w +(makes) 1832 5340 w +(the) 2182 5340 w +(compilation) 2374 5340 w +(much) 2981 5340 w +(less) 3286 5340 w +(clumsy.) 3510 5340 w +(A) 3949 5340 w +(disadvantage) 4055 5340 w +(is) 4732 5340 w +(that) 4849 5340 w +(if you call this function without an assignment, a dummy location must be invented.) 720 5460 w +(There) 720 5616 w +(is) 1037 5616 w +(also) 1156 5616 w +(a) 1391 5616 w +(danger) 1485 5616 w +(of) 1863 5616 w +(calling) 2000 5616 w +(a) 2356 5616 w +(function) 2450 5616 w +(that) 2890 5616 w +(returns) 3120 5616 w +(a) 3509 5616 w +(structure) 3603 5616 w +(without) 4081 5616 w +(declaring) 4486 5616 w +(it) 4974 5616 w +(as such.) 720 5736 w +(With ANSI C function prototypes, this error need never occur.) 1180 5736 w 10 /LucidaSans-Demi f -(5.1.) 720 5220 w -(Parsing) 962 5220 w -10 /LucidaSansUnicode00 f -(The) 720 5376 w -(first) 952 5376 w -(pass) 1198 5376 w -(is) 1469 5376 w -(a) 1600 5376 w -(YACC-based) 1706 5376 w -(parser) 2372 5376 w -([Joh79].) 2731 5376 w -(Declarations) 3193 5376 w -(are) 3847 5376 w -(interpreted) 4051 5376 w -(immedi\255) 4644 5376 w -(ately,) 720 5496 w -(building) 1029 5496 w -(a) 1476 5496 w -(block) 1579 5496 w -(structured) 1889 5496 w -(symbol) 2438 5496 w -(table.) 2835 5496 w -(Executable) 3187 5496 w -(statements) 3759 5496 w -(are) 4341 5496 w -(put) 4540 5496 w -(into) 4749 5496 w -(a) 4985 5496 w -(parse) 720 5616 w -(tree) 1042 5616 w -(and) 1288 5616 w -(collected,) 1524 5616 w -(without) 2045 5616 w -(interpretation.) 2466 5616 w -(At) 3253 5616 w -(the) 3416 5616 w -(end) 3628 5616 w -(of) 3866 5616 w -(each) 4021 5616 w -(procedure,) 4302 5616 w -(the) 4885 5616 w -(parse tree for the function is examined by the other passes of the compiler.) 720 5736 w -(The input stream) 720 5892 w -(of) 1584 5892 w -(the) 1715 5892 w -(parser) 1903 5892 w -(is) 2243 5892 w -(a) 2356 5892 w -(pushdown) 2444 5892 w -(list) 2978 5892 w -(of) 3157 5892 w -(input) 3288 5892 w -(activations.) 3574 5892 w -(The) 4190 5892 w -(preprocessor) 4404 5892 w -(expansions) 720 6012 w -(of) 1315 6012 w -(macros) 1457 6012 w -(and) 1853 6012 w -10 /LucidaTypewriter f -(#include) 2077 6012 w -10 /LucidaSansUnicode00 f -(are) 2697 6012 w -(implemented) 2893 6012 w -(as) 3574 6012 w -(pushdowns.) 3724 6012 w -(Thus) 4384 6012 w -(there) 4665 6012 w -(is) 4960 6012 w -(no separate pass for preprocessing.) 720 6132 w +(5.) 720 5976 w +(Implementation) 873 5976 w +10 /LucidaSansUnicode00 f +(The) 720 6132 w +(compiler) 990 6132 w +(is) 1502 6132 w +(divided) 1671 6132 w +(internally) 2115 6132 w +(into) 2656 6132 w +(four) 2934 6132 w +(machine-independent) 3225 6132 w +(passes,) 4390 6132 w +(four) 4839 6132 w +(machine-dependent) 720 6252 w +(passes,) 1744 6252 w +(and) 2143 6252 w +(an) 2363 6252 w +(output) 2520 6252 w +(pass.) 2882 6252 w +(The) 3206 6252 w +(next) 3427 6252 w +(nine) 3682 6252 w +(sections) 3930 6252 w +(describe) 4367 6252 w +(each) 4816 6252 w +(pass in order.) 720 6372 w 10 /LucidaSans-Demi f -(5.2.) 720 6372 w -(Typing) 962 6372 w -10 /LucidaSansUnicode00 f -(The) 720 6528 w -(next) 942 6528 w -(pass) 1199 6528 w -(distributes) 1460 6528 w -(typing) 2020 6528 w -(information) 2366 6528 w -(to) 2974 6528 w -(every) 3113 6528 w -(node) 3412 6528 w -(of) 3696 6528 w -(the) 3836 6528 w -(tree.) 4033 6528 w -(Implicit) 4329 6528 w -(opera\255) 4731 6528 w -(tions) 720 6648 w -(on) 1002 6648 w -(the) 1167 6648 w -(tree) 1364 6648 w -(are) 1595 6648 w -(added,) 1788 6648 w -(such) 2161 6648 w -(as) 2428 6648 w -(type) 2575 6648 w -(promotions) 2824 6648 w -(and) 3424 6648 w -(taking) 3645 6648 w -(the) 3989 6648 w -(address) 4185 6648 w -(of) 4606 6648 w -(arrays) 4745 6648 w -(and functions.) 720 6768 w +(5.1.) 720 6612 w +(Parsing) 962 6612 w +10 /LucidaSansUnicode00 f +(The) 720 6768 w +(first) 952 6768 w +(pass) 1198 6768 w +(is) 1469 6768 w +(a) 1600 6768 w +(YACC-based) 1706 6768 w +(parser) 2372 6768 w +([Joh79].) 2731 6768 w +(Declarations) 3193 6768 w +(are) 3847 6768 w +(interpreted) 4051 6768 w +(immedi\255) 4644 6768 w +(ately,) 720 6888 w +(building) 1029 6888 w +(a) 1476 6888 w +(block) 1579 6888 w +(structured) 1889 6888 w +(symbol) 2438 6888 w +(table.) 2835 6888 w +(Executable) 3187 6888 w +(statements) 3759 6888 w +(are) 4341 6888 w +(put) 4540 6888 w +(into) 4749 6888 w +(a) 4985 6888 w +(parse) 720 7008 w +(tree) 1042 7008 w +(and) 1288 7008 w +(collected,) 1524 7008 w +(without) 2045 7008 w +(interpretation.) 2466 7008 w +(At) 3253 7008 w +(the) 3416 7008 w +(end) 3628 7008 w +(of) 3866 7008 w +(each) 4021 7008 w +(procedure,) 4302 7008 w +(the) 4885 7008 w +(parse tree for the function is examined by the other passes of the compiler.) 720 7128 w +(The input stream) 720 7284 w +(of) 1584 7284 w +(the) 1715 7284 w +(parser) 1903 7284 w +(is) 2243 7284 w +(a) 2356 7284 w +(pushdown) 2444 7284 w +(list) 2978 7284 w +(of) 3157 7284 w +(input) 3288 7284 w +(activations.) 3574 7284 w +(The) 4190 7284 w +(preprocessor) 4404 7284 w cleartomark showpage saveobj restore @@ -5576,568 +5558,507 @@ 6 pagesetup 10 /LucidaSansUnicode00 f (\255 6 \255) 2783 480 w +(expansions) 720 840 w +(of) 1315 840 w +(macros) 1457 840 w +(and) 1853 840 w +10 /LucidaTypewriter f +(#include) 2077 840 w +10 /LucidaSansUnicode00 f +(are) 2697 840 w +(implemented) 2893 840 w +(as) 3574 840 w +(pushdowns.) 3724 840 w +(Thus) 4384 840 w +(there) 4665 840 w +(is) 4960 840 w +(no separate pass for preprocessing.) 720 960 w 10 /LucidaSans-Demi f -(5.3.) 720 840 w -(Machine-independent optimization) 962 840 w -10 /LucidaSansUnicode00 f -(The) 720 996 w -(next) 937 996 w -(pass) 1190 996 w -(performs) 1447 996 w -(optimizations) 1927 996 w -(and) 2628 996 w -(transformations) 2845 996 w -(of) 3655 996 w -(the) 3790 996 w -(tree,) 3982 996 w -(such) 4241 996 w -(as) 4504 996 w -(convert\255) 4647 996 w -(ing) 720 1116 w -10 /LucidaTypewriter f -(&*x) 905 1116 w -10 /LucidaSansUnicode00 f -(and) 1153 1116 w -10 /LucidaTypewriter f -(*&x) 1365 1116 w -10 /LucidaSansUnicode00 f -(into) 1613 1116 w -10 /LucidaTypewriter f -(x) 1834 1116 w -10 /LucidaSansUnicode00 f -(.) 1906 1116 w -(Constant expressions are converted to constants in this pass.) 2002 1116 w +(5.2.) 720 1200 w +(Typing) 962 1200 w +10 /LucidaSansUnicode00 f +(The) 720 1356 w +(next) 942 1356 w +(pass) 1199 1356 w +(distributes) 1460 1356 w +(typing) 2020 1356 w +(information) 2366 1356 w +(to) 2974 1356 w +(every) 3113 1356 w +(node) 3412 1356 w +(of) 3696 1356 w +(the) 3836 1356 w +(tree.) 4033 1356 w +(Implicit) 4329 1356 w +(opera\255) 4731 1356 w +(tions) 720 1476 w +(on) 1002 1476 w +(the) 1167 1476 w +(tree) 1364 1476 w +(are) 1595 1476 w +(added,) 1788 1476 w +(such) 2161 1476 w +(as) 2428 1476 w +(type) 2575 1476 w +(promotions) 2824 1476 w +(and) 3424 1476 w +(taking) 3645 1476 w +(the) 3989 1476 w +(address) 4185 1476 w +(of) 4606 1476 w +(arrays) 4745 1476 w +(and functions.) 720 1596 w 10 /LucidaSans-Demi f -(5.4.) 720 1356 w -(Arithmetic rewrites) 962 1356 w -10 /LucidaSansUnicode00 f -(This) 720 1512 w -(is) 960 1512 w -(another) 1075 1512 w -(machine-independent) 1484 1512 w -(optimization.) 2594 1512 w -(Subtrees) 3306 1512 w -(of) 3761 1512 w -(add,) 3894 1512 w -(subtract,) 4142 1512 w -(and) 4607 1512 w -(mul\255) 4823 1512 w -(tiply) 720 1632 w -(of) 963 1632 w -(integers) 1094 1632 w -(are) 1521 1632 w -(rewritten) 1706 1632 w -(for) 2175 1632 w -(easier) 2347 1632 w -(compilation.) 2668 1632 w -(The major transformation is factor\255) 3334 1632 w -(ing:) 720 1752 w -10 /LucidaTypewriter f -(4+8*a+16*b+5) 968 1752 w -10 /LucidaSansUnicode00 f -(is) 1895 1752 w -(transformed) 2038 1752 w -(into) 2698 1752 w -10 /LucidaTypewriter f -(9+8*\(a+2*b\)) 2950 1752 w -10 /LucidaSansUnicode00 f -(.) 3742 1752 w -(Such) 3869 1752 w -(expressions) 4162 1752 w -(arise) 4808 1752 w -(from address manipulation and array indexing.) 720 1872 w +(5.3.) 720 1836 w +(Machine-independent optimization) 962 1836 w +10 /LucidaSansUnicode00 f +(The) 720 1992 w +(next) 937 1992 w +(pass) 1190 1992 w +(performs) 1447 1992 w +(optimizations) 1927 1992 w +(and) 2628 1992 w +(transformations) 2845 1992 w +(of) 3655 1992 w +(the) 3790 1992 w +(tree,) 3982 1992 w +(such) 4241 1992 w +(as) 4504 1992 w +(convert\255) 4647 1992 w +(ing) 720 2112 w +10 /LucidaTypewriter f +(&*x) 905 2112 w +10 /LucidaSansUnicode00 f +(and) 1153 2112 w +10 /LucidaTypewriter f +(*&x) 1365 2112 w +10 /LucidaSansUnicode00 f +(into) 1613 2112 w +10 /LucidaTypewriter f +(x) 1834 2112 w +10 /LucidaSansUnicode00 f +(.) 1906 2112 w +(Constant expressions are converted to constants in this pass.) 2002 2112 w 10 /LucidaSans-Demi f -(5.5.) 720 2112 w -(Addressability) 962 2112 w -10 /LucidaSansUnicode00 f -(This) 720 2268 w -(is) 962 2268 w -(the) 1080 2268 w -(first) 1273 2268 w -(of) 1506 2268 w -(the) 1642 2268 w -(machine-dependent) 1835 2268 w -(passes.) 2857 2268 w -(The) 3286 2268 w -(addressability) 3505 2268 w -(of) 4217 2268 w -(a) 4353 2268 w -(processor) 4446 2268 w -(is) 4960 2268 w -(defined) 720 2388 w -(as) 1119 2388 w -(the) 1258 2388 w -(set) 1446 2388 w -(of) 1623 2388 w -(expressions) 1754 2388 w -(that) 2369 2388 w -(is) 2593 2388 w -(legal) 2706 2388 w -(in) 2970 2388 w -(the) 3094 2388 w -(address field of a machine language) 3282 2388 w -(instruction.) 720 2508 w -(The) 1344 2508 w -(addressability) 1563 2508 w -(of) 2275 2508 w -(different) 2411 2508 w -(processors) 2867 2508 w -(varies) 3433 2508 w -(widely.) 3756 2508 w -(At) 4165 2508 w -(one) 4310 2508 w -(end) 4528 2508 w -(of) 4748 2508 w -(the) 4885 2508 w -(spectrum) 720 2628 w -(are) 1219 2628 w -(the) 1416 2628 w -(68020) 1616 2628 w -(and) 1976 2628 w -(VAX,) 2201 2628 w -(which) 2475 2628 w -(allow) 2801 2628 w -(a) 3097 2628 w -(complex) 3197 2628 w -(mix) 3655 2628 w -(of) 3882 2628 w -(incrementing,) 4024 2628 w -(decre\255) 4740 2628 w -(menting,) 720 2748 w -(indexing,) 1193 2748 w -(and) 1689 2748 w -(relative) 1909 2748 w -(addressing.) 2304 2748 w -(At) 2941 2748 w -(the) 3087 2748 w -(other) 3282 2748 w -(end) 3580 2748 w -(is) 3802 2748 w -(the) 3923 2748 w -(MIPS,) 4119 2748 w -(which) 4416 2748 w -(allows) 4738 2748 w -(only) 720 2868 w -(registers) 968 2868 w -(and) 1435 2868 w -(constant) 1658 2868 w -(offsets) 2117 2868 w -(from) 2490 2868 w -(the) 2765 2868 w -(contents) 2963 2868 w -(of) 3423 2868 w -(a) 3564 2868 w -(register.) 3662 2868 w -(The) 4142 2868 w -(addressability) 4366 2868 w -(can be different for different instructions within the same processor.) 720 2988 w -(It) 720 3144 w -(is) 819 3144 w -(important) 933 3144 w -(to) 1445 3144 w -(the) 1577 3144 w -(code) 1766 3144 w -(generator) 2031 3144 w -(to) 2536 3144 w -(know) 2668 3144 w -(when) 2960 3144 w -(a) 3251 3144 w -(subtree) 3340 3144 w -(represents) 3740 3144 w -(an) 4288 3144 w -(address) 4439 3144 w -(of) 4853 3144 w -(a) 4985 3144 w -(particular) 720 3264 w -(type.) 1219 3264 w -(This) 1526 3264 w -(is) 1766 3264 w -(done) 1881 3264 w -(with) 2158 3264 w -(a) 2398 3264 w -(bottom-up) 2488 3264 w -(walk) 3058 3264 w -(of) 3312 3264 w -(the) 3445 3264 w -(tree.) 3635 3264 w -(In) 3924 3264 w -(this) 4050 3264 w -(pass,) 4264 3264 w -(the) 4551 3264 w -(leaves) 4741 3264 w -(are) 720 3384 w -(labeled) 912 3384 w -(with) 1303 3384 w -(small) 1548 3384 w -(integers.) 1845 3384 w -(When) 2344 3384 w -(an) 2651 3384 w -(internal) 2809 3384 w -(node) 3221 3384 w -(is) 3504 3384 w -(encountered,) 3625 3384 w -(it) 4305 3384 w -(is) 4412 3384 w -(labeled) 4533 3384 w -(by) 4925 3384 w -(consulting) 720 3504 w -(a) 1261 3504 w -(table) 1351 3504 w -(indexed) 1626 3504 w -(by) 2051 3504 w -(the) 2201 3504 w -(labels) 2391 3504 w -(on) 2709 3504 w -(the) 2867 3504 w -(left) 3057 3504 w -(and) 3251 3504 w -(right) 3466 3504 w -(subtrees.) 3732 3504 w -(For) 4248 3504 w -(example,) 4438 3504 w -(on) 4917 3504 w -(the) 720 3624 w -(68020) 919 3624 w -(processor,) 1278 3624 w -(it) 1830 3624 w -(is) 1940 3624 w -(possible) 2064 3624 w -(to) 2511 3624 w -(address) 2653 3624 w -(an) 3077 3624 w -(offset) 3238 3624 w -(from) 3561 3624 w -(a) 3837 3624 w -(named) 3936 3624 w -(location.) 4309 3624 w -(In) 4803 3624 w -(C,) 4939 3624 w -(this) 720 3744 w -(is) 932 3744 w -(represented) 1045 3744 w -(by) 1660 3744 w -(the) 1808 3744 w -(expression) 1996 3744 w -10 /LucidaTypewriter f -(*\(&name+constant\)) 2560 3744 w -10 /LucidaSansUnicode00 f -(.) 3784 3744 w -(This is marked address\255) 3880 3744 w -(able) 720 3864 w -(by) 978 3864 w -(the) 1148 3864 w -(following) 1358 3864 w -(table.) 1860 3864 w -(In) 2219 3864 w -(the) 2365 3864 w -(table,) 2575 3864 w -(a) 2902 3864 w -(node) 3013 3864 w -(represented) 3311 3864 w -(by) 3949 3864 w -(the) 4120 3864 w -(left) 4331 3864 w -(column) 4546 3864 w -(is) 4960 3864 w -(marked) 720 3984 w -(with) 1125 3984 w -(a) 1369 3984 w -(small) 1463 3984 w -(integer) 1759 3984 w -(from) 2141 3984 w -(the) 2412 3984 w -(right) 2606 3984 w -(column.) 2876 3984 w -(Marks) 3337 3984 w -(of) 3667 3984 w -(the) 3804 3984 w -(form) 3998 3984 w -10 /LucidaTypewriter f -(A) 4269 3984 w +(5.4.) 720 2352 w +(Arithmetic rewrites) 962 2352 w +10 /LucidaSansUnicode00 f +(This) 720 2508 w +(is) 960 2508 w +(another) 1075 2508 w +(machine-independent) 1484 2508 w +(optimization.) 2594 2508 w +(Subtrees) 3306 2508 w +(of) 3761 2508 w +(add,) 3894 2508 w +(subtract,) 4142 2508 w +(and) 4607 2508 w +(mul\255) 4823 2508 w +(tiply) 720 2628 w +(of) 963 2628 w +(integers) 1094 2628 w +(are) 1521 2628 w +(rewritten) 1706 2628 w +(for) 2175 2628 w +(easier) 2347 2628 w +(compilation.) 2668 2628 w +(The major transformation is factor\255) 3334 2628 w +(ing:) 720 2748 w +10 /LucidaTypewriter f +(4+8*a+16*b+5) 968 2748 w +10 /LucidaSansUnicode00 f +(is) 1895 2748 w +(transformed) 2038 2748 w +(into) 2698 2748 w +10 /LucidaTypewriter f +(9+8*\(a+2*b\)) 2950 2748 w +10 /LucidaSansUnicode00 f +(.) 3742 2748 w +(Such) 3869 2748 w +(expressions) 4162 2748 w +(arise) 4808 2748 w +(from address manipulation and array indexing.) 720 2868 w +10 /LucidaSans-Demi f +(5.5.) 720 3108 w +(Addressability) 962 3108 w +10 /LucidaSansUnicode00 f +(This) 720 3264 w +(is) 962 3264 w +(the) 1080 3264 w +(first) 1273 3264 w +(of) 1506 3264 w +(the) 1642 3264 w +(machine-dependent) 1835 3264 w +(passes.) 2857 3264 w +(The) 3286 3264 w +(addressability) 3505 3264 w +(of) 4217 3264 w +(a) 4353 3264 w +(processor) 4446 3264 w +(is) 4960 3264 w +(defined) 720 3384 w +(as) 1119 3384 w +(the) 1258 3384 w +(set) 1446 3384 w +(of) 1623 3384 w +(expressions) 1754 3384 w +(that) 2369 3384 w +(is) 2593 3384 w +(legal) 2706 3384 w +(in) 2970 3384 w +(the) 3094 3384 w +(address field of a machine language) 3282 3384 w +(instruction.) 720 3504 w +(The) 1344 3504 w +(addressability) 1563 3504 w +(of) 2275 3504 w +(different) 2411 3504 w +(processors) 2867 3504 w +(varies) 3433 3504 w +(widely.) 3756 3504 w +(At) 4165 3504 w +(one) 4310 3504 w +(end) 4528 3504 w +(of) 4748 3504 w +(the) 4885 3504 w +(spectrum) 720 3624 w +(are) 1219 3624 w +(the) 1416 3624 w +(68020) 1616 3624 w +(and) 1976 3624 w +(VAX,) 2201 3624 w +(which) 2475 3624 w +(allow) 2801 3624 w +(a) 3097 3624 w +(complex) 3197 3624 w +(mix) 3655 3624 w +(of) 3882 3624 w +(incrementing,) 4024 3624 w +(decre\255) 4740 3624 w +(menting,) 720 3744 w +(indexing,) 1193 3744 w +(and) 1689 3744 w +(relative) 1909 3744 w +(addressing.) 2304 3744 w +(At) 2941 3744 w +(the) 3087 3744 w +(other) 3282 3744 w +(end) 3580 3744 w +(is) 3802 3744 w +(the) 3923 3744 w +(MIPS,) 4119 3744 w +(which) 4416 3744 w +(allows) 4738 3744 w +(only) 720 3864 w +(registers) 968 3864 w +(and) 1435 3864 w +(constant) 1658 3864 w +(offsets) 2117 3864 w +(from) 2490 3864 w +(the) 2765 3864 w +(contents) 2963 3864 w +(of) 3423 3864 w +(a) 3564 3864 w +(register.) 3662 3864 w +(The) 4142 3864 w +(addressability) 4366 3864 w +(can be different for different instructions within the same processor.) 720 3984 w +(It) 720 4140 w +(is) 819 4140 w +(important) 933 4140 w +(to) 1445 4140 w +(the) 1577 4140 w +(code) 1766 4140 w +(generator) 2031 4140 w +(to) 2536 4140 w +(know) 2668 4140 w +(when) 2960 4140 w +(a) 3251 4140 w +(subtree) 3340 4140 w +(represents) 3740 4140 w +(an) 4288 4140 w +(address) 4439 4140 w +(of) 4853 4140 w +(a) 4985 4140 w +(particular) 720 4260 w +(type.) 1219 4260 w +(This) 1526 4260 w +(is) 1766 4260 w +(done) 1881 4260 w +(with) 2158 4260 w +(a) 2398 4260 w +(bottom-up) 2488 4260 w +(walk) 3058 4260 w +(of) 3312 4260 w +(the) 3445 4260 w +(tree.) 3635 4260 w +(In) 3924 4260 w +(this) 4050 4260 w +(pass,) 4264 4260 w +(the) 4551 4260 w +(leaves) 4741 4260 w +(are) 720 4380 w +(labeled) 912 4380 w +(with) 1303 4380 w +(small) 1548 4380 w +(integers.) 1845 4380 w +(When) 2344 4380 w +(an) 2651 4380 w +(internal) 2809 4380 w +(node) 3221 4380 w +(is) 3504 4380 w +(encountered,) 3625 4380 w +(it) 4305 4380 w +(is) 4412 4380 w +(labeled) 4533 4380 w +(by) 4925 4380 w +(consulting) 720 4500 w +(a) 1261 4500 w +(table) 1351 4500 w +(indexed) 1626 4500 w +(by) 2051 4500 w +(the) 2201 4500 w +(labels) 2391 4500 w +(on) 2709 4500 w +(the) 2867 4500 w +(left) 3057 4500 w +(and) 3251 4500 w +(right) 3466 4500 w +(subtrees.) 3732 4500 w +(For) 4248 4500 w +(example,) 4438 4500 w +(on) 4917 4500 w +(the) 720 4620 w +(68020) 919 4620 w +(processor,) 1278 4620 w +(it) 1830 4620 w +(is) 1940 4620 w +(possible) 2064 4620 w +(to) 2511 4620 w +(address) 2653 4620 w +(an) 3077 4620 w +(offset) 3238 4620 w +(from) 3561 4620 w +(a) 3837 4620 w +(named) 3936 4620 w +(location.) 4309 4620 w +(In) 4803 4620 w +(C,) 4939 4620 w +(this) 720 4740 w +(is) 932 4740 w +(represented) 1045 4740 w +(by) 1660 4740 w +(the) 1808 4740 w +(expression) 1996 4740 w +10 /LucidaTypewriter f +(*\(&name+constant\)) 2560 4740 w +10 /LucidaSansUnicode00 f +(.) 3784 4740 w +(This is marked address\255) 3880 4740 w +(able) 720 4860 w +(by) 978 4860 w +(the) 1148 4860 w +(following) 1358 4860 w +(table.) 1860 4860 w +(In) 2219 4860 w +(the) 2365 4860 w +(table,) 2575 4860 w +(a) 2902 4860 w +(node) 3013 4860 w +(represented) 3311 4860 w +(by) 3949 4860 w +(the) 4120 4860 w +(left) 4331 4860 w +(column) 4546 4860 w +(is) 4960 4860 w +(marked) 720 4980 w +(with) 1125 4980 w +(a) 1369 4980 w +(small) 1463 4980 w +(integer) 1759 4980 w +(from) 2141 4980 w +(the) 2412 4980 w +(right) 2606 4980 w +(column.) 2876 4980 w +(Marks) 3337 4980 w +(of) 3667 4980 w +(the) 3804 4980 w +(form) 3998 4980 w +10 /LucidaTypewriter f +(A) 4269 4980 w 8 /LucidaTypewriter f -(i) 4341 4024 w -10 /LucidaSansUnicode00 f -(are) 4437 3984 w -(address\255) 4627 3984 w -(able while marks of the form) 720 4104 w -10 /LucidaTypewriter f -(N) 2151 4104 w +(i) 4341 5020 w +10 /LucidaSansUnicode00 f +(are) 4437 4980 w +(address\255) 4627 4980 w +(able while marks of the form) 720 5100 w +10 /LucidaTypewriter f +(N) 2151 5100 w 8 /LucidaTypewriter f -(i) 2223 4144 w -10 /LucidaSansUnicode00 f -(are not addressable.) 2313 4104 w +(i) 2223 5140 w +10 /LucidaSansUnicode00 f +(are not addressable.) 2313 5100 w 10 /LucidaSans-Demi f -(Node) 1152 4284 w -(Marked) 1872 4284 w -10 /LucidaTypewriter f -(name) 1152 4404 w -(A) 1872 4404 w +(Node) 1152 5280 w +(Marked) 1872 5280 w +10 /LucidaTypewriter f +(name) 1152 5400 w +(A) 1872 5400 w 8 /LucidaTypewriter f -(1) 1944 4444 w -10 /LucidaTypewriter f -(const) 1152 4524 w -(A) 1872 4524 w +(1) 1944 5440 w +10 /LucidaTypewriter f +(const) 1152 5520 w +(A) 1872 5520 w 8 /LucidaTypewriter f -(2) 1944 4564 w -10 /LucidaTypewriter f -(&A) 1152 4644 w +(2) 1944 5560 w +10 /LucidaTypewriter f +(&A) 1152 5640 w 8 /LucidaTypewriter f -(1) 1296 4684 w -10 /LucidaTypewriter f -(A) 1872 4644 w +(1) 1296 5680 w +10 /LucidaTypewriter f +(A) 1872 5640 w 8 /LucidaTypewriter f -(3) 1944 4684 w -10 /LucidaTypewriter f -(A) 1152 4764 w +(3) 1944 5680 w +10 /LucidaTypewriter f +(A) 1152 5760 w 8 /LucidaTypewriter f -(3) 1224 4804 w -10 /LucidaTypewriter f -(+A) 1282 4764 w +(3) 1224 5800 w +10 /LucidaTypewriter f +(+A) 1282 5760 w 8 /LucidaTypewriter f -(1) 1426 4804 w -10 /LucidaTypewriter f -(N) 1872 4764 w +(1) 1426 5800 w +10 /LucidaTypewriter f +(N) 1872 5760 w 8 /LucidaTypewriter f -(1) 1944 4804 w -10 /LucidaSansUnicode00 f -(\(note that this is not addressable\)) 2074 4764 w -10 /LucidaTypewriter f -(*N) 1152 4884 w +(1) 1944 5800 w +10 /LucidaSansUnicode00 f +(\(note that this is not addressable\)) 2074 5760 w +10 /LucidaTypewriter f +(*N) 1152 5880 w 8 /LucidaTypewriter f -(1) 1296 4924 w -10 /LucidaTypewriter f -(A) 1872 4884 w +(1) 1296 5920 w +10 /LucidaTypewriter f +(A) 1872 5880 w 8 /LucidaTypewriter f -(4) 1944 4924 w -10 /LucidaSansUnicode00 f -(Here) 720 5064 w -(there) 988 5064 w -(is) 1281 5064 w -(a) 1403 5064 w -(distinction) 1500 5064 w -(between) 2053 5064 w -(a) 2502 5064 w -(node) 2599 5064 w -(marked) 2883 5064 w -10 /LucidaTypewriter f -(A) 3291 5064 w +(4) 1944 5920 w +10 /LucidaSansUnicode00 f +(Here) 720 6060 w +(there) 988 6060 w +(is) 1281 6060 w +(a) 1403 6060 w +(distinction) 1500 6060 w +(between) 2053 6060 w +(a) 2502 6060 w +(node) 2599 6060 w +(marked) 2883 6060 w +10 /LucidaTypewriter f +(A) 3291 6060 w 8 /LucidaTypewriter f -(1) 3363 5104 w -10 /LucidaSansUnicode00 f -(and) 3463 5064 w -(a) 3685 5064 w -(node) 3782 5064 w -(marked) 4066 5064 w -10 /LucidaTypewriter f -(A) 4474 5064 w +(1) 3363 6100 w +10 /LucidaSansUnicode00 f +(and) 3463 6060 w +(a) 3685 6060 w +(node) 3782 6060 w +(marked) 4066 6060 w +10 /LucidaTypewriter f +(A) 4474 6060 w 8 /LucidaTypewriter f -(4) 4546 5104 w -10 /LucidaSansUnicode00 f -(because) 4646 5064 w -(the address operator of an) 720 5184 w -10 /LucidaTypewriter f -(A) 2045 5184 w +(4) 4546 6100 w +10 /LucidaSansUnicode00 f +(because) 4646 6060 w +(the address operator of an) 720 6180 w +10 /LucidaTypewriter f +(A) 2045 6180 w 8 /LucidaTypewriter f -(4) 2117 5224 w -10 /LucidaSansUnicode00 f -(node is not addressable.) 2207 5184 w -(So to extend the table:) 3464 5184 w +(4) 2117 6220 w +10 /LucidaSansUnicode00 f +(node is not addressable.) 2207 6180 w +(So to extend the table:) 3464 6180 w 10 /LucidaSans-Demi f -(Node) 1152 5364 w -(Marked) 1872 5364 w -10 /LucidaTypewriter f -(&A) 1152 5484 w +(Node) 1152 6360 w +(Marked) 1872 6360 w +10 /LucidaTypewriter f +(&A) 1152 6480 w 8 /LucidaTypewriter f -(4) 1296 5524 w -10 /LucidaTypewriter f -(N) 1872 5484 w +(4) 1296 6520 w +10 /LucidaTypewriter f +(N) 1872 6480 w 8 /LucidaTypewriter f -(2) 1944 5524 w -10 /LucidaTypewriter f -(N) 1152 5604 w +(2) 1944 6520 w +10 /LucidaTypewriter f +(N) 1152 6600 w 8 /LucidaTypewriter f -(2) 1224 5644 w -10 /LucidaTypewriter f -(+N) 1282 5604 w +(2) 1224 6640 w +10 /LucidaTypewriter f +(+N) 1282 6600 w 8 /LucidaTypewriter f -(1) 1426 5644 w -10 /LucidaTypewriter f -(N) 1872 5604 w +(1) 1426 6640 w +10 /LucidaTypewriter f +(N) 1872 6600 w 8 /LucidaTypewriter f -(1) 1944 5644 w -10 /LucidaSansUnicode00 f -(The) 720 5784 w -(full) 934 5784 w -(addressability) 1124 5784 w -(of) 1831 5784 w -(the) 1962 5784 w -(68020) 2150 5784 w -(is) 2498 5784 w -(expressed) 2611 5784 w -(in) 3142 5784 w -(18) 3267 5784 w -(rules) 3427 5784 w -(like) 3700 5784 w -(this,) 3906 5784 w -(while) 4151 5784 w -(the) 4438 5784 w -(address\255) 4627 5784 w -(ability) 720 5904 w -(of) 1055 5904 w -(the) 1194 5904 w -(MIPS) 1390 5904 w -(is) 1655 5904 w -(expressed) 1775 5904 w -(in) 2313 5904 w -(11) 2444 5904 w -(rules.) 2610 5904 w -(When) 2953 5904 w -(one) 3259 5904 w -(ports) 3478 5904 w -(the) 3771 5904 w -(compiler,) 3966 5904 w -(this) 4461 5904 w -(table) 4680 5904 w -(is) 4960 5904 w -(usually) 720 6024 w -(initialized) 1097 6024 w -(so) 1609 6024 w -(that) 1758 6024 w -(leaves) 1986 6024 w -(are) 2322 6024 w -(labeled) 2511 6024 w -(as) 2900 6024 w -(addressable) 3044 6024 w -(and) 3665 6024 w -(nothing) 3883 6024 w -(else.) 4296 6024 w -(The) 4590 6024 w -(code) 4809 6024 w -(produced is poor, but porting is easy.) 720 6144 w -(The table can be extended later.) 2617 6144 w -(This) 720 6300 w -(pass) 960 6300 w -(also) 1215 6300 w -(rewrites) 1447 6300 w -(some) 1871 6300 w -(complex) 2168 6300 w -(operators) 2618 6300 w -(into) 3120 6300 w -(procedure) 3345 6300 w -(calls.) 3875 6300 w -(Examples) 4190 6300 w -(include) 4688 6300 w -(64-bit multiply and divide.) 720 6420 w -(In) 720 6576 w -(the) 844 6576 w -(same) 1032 6576 w -(bottom-up) 1320 6576 w -(pass) 1889 6576 w -(of) 2143 6576 w -(the) 2275 6576 w -(tree,) 2464 6576 w -(the) 2720 6576 w -(nodes) 2909 6576 w -(are) 3236 6576 w -(labeled) 3422 6576 w -(with) 3807 6576 w -(a) 4046 6576 w -(Sethi-Ullman) 4135 6576 w -(com\255) 4802 6576 w -(plexity) 720 6696 w -([Set70].) 1083 6696 w -(This) 1522 6696 w -(number) 1763 6696 w -(is) 2176 6696 w -(roughly) 2291 6696 w -(the) 2695 6696 w -(number) 2885 6696 w -(of) 3297 6696 w -(registers) 3430 6696 w -(required) 3889 6696 w -(to) 4335 6696 w -(compile) 4468 6696 w -(the) 4885 6696 w -(tree) 720 6816 w -(on) 948 6816 w -(an) 1109 6816 w -(ideal) 1264 6816 w -(machine.) 1534 6816 w -(An) 2044 6816 w -(addressable) 2213 6816 w -(node) 2834 6816 w -(is) 3114 6816 w -(marked) 3233 6816 w -(0.) 3638 6816 w -(A) 3804 6816 w -(function) 3912 6816 w -(call) 4352 6816 w -(is) 4555 6816 w -(marked) 4674 6816 w -(infinite.) 720 6936 w -(A) 1164 6936 w -(unary) 1272 6936 w -(operator) 1582 6936 w -(is) 2035 6936 w -(marked) 2153 6936 w -(as) 2557 6936 w -(the) 2701 6936 w -(maximum) 2894 6936 w -(of) 3418 6936 w -(1) 3554 6936 w -(and) 3655 6936 w -(the) 3873 6936 w -(mark) 4066 6936 w -(of) 4351 6936 w -(its) 4487 6936 w -(subtree.) 4642 6936 w -(A) 720 7056 w -(binary) 828 7056 w -(operator) 1169 7056 w -(with) 1623 7056 w -(equal) 1867 7056 w -(marks) 2171 7056 w -(on) 2508 7056 w -(its) 2670 7056 w -(subtrees) 2826 7056 w -(is) 3282 7056 w -(marked) 3401 7056 w -(with) 3806 7056 w -(a) 4050 7056 w -(subtree) 4144 7056 w -(mark) 4549 7056 w -(plus) 4835 7056 w -(1.) 720 7176 w -(A) 888 7176 w -(binary) 998 7176 w -(operator) 1341 7176 w -(with) 1797 7176 w -(unequal) 2043 7176 w -(marks) 2473 7176 w -(on) 2811 7176 w -(its) 2974 7176 w -(subtrees) 3131 7176 w -(is) 3588 7176 w -(marked) 3708 7176 w -(with) 4114 7176 w -(the) 4359 7176 w -(maximum) 4554 7176 w -(mark) 720 7296 w -(of) 1017 7296 w -(its) 1165 7296 w -(subtrees.) 1332 7296 w -(The) 1863 7296 w -(actual) 2094 7296 w -(values) 2433 7296 w -(of) 2788 7296 w -(the) 2936 7296 w -(marks) 3141 7296 w -(are) 3489 7296 w -(not) 3691 7296 w -(too) 3901 7296 w -(important,) 4111 7296 w -(but) 4672 7296 w -(the) 4885 7296 w +(1) 1944 6640 w +10 /LucidaSansUnicode00 f +(The) 720 6780 w +(full) 934 6780 w +(addressability) 1124 6780 w +(of) 1831 6780 w +(the) 1962 6780 w +(68020) 2150 6780 w +(is) 2498 6780 w +(expressed) 2611 6780 w +(in) 3142 6780 w +(18) 3267 6780 w +(rules) 3427 6780 w +(like) 3700 6780 w +(this,) 3906 6780 w +(while) 4151 6780 w +(the) 4438 6780 w +(address\255) 4627 6780 w +(ability) 720 6900 w +(of) 1055 6900 w +(the) 1194 6900 w +(MIPS) 1390 6900 w +(is) 1655 6900 w +(expressed) 1775 6900 w +(in) 2313 6900 w +(11) 2444 6900 w +(rules.) 2610 6900 w +(When) 2953 6900 w +(one) 3259 6900 w +(ports) 3478 6900 w +(the) 3771 6900 w +(compiler,) 3966 6900 w +(this) 4461 6900 w +(table) 4680 6900 w +(is) 4960 6900 w +(usually) 720 7020 w +(initialized) 1097 7020 w +(so) 1609 7020 w +(that) 1758 7020 w +(leaves) 1986 7020 w +(are) 2322 7020 w +(labeled) 2511 7020 w +(as) 2900 7020 w +(addressable) 3044 7020 w +(and) 3665 7020 w +(nothing) 3883 7020 w +(else.) 4296 7020 w +(The) 4590 7020 w +(code) 4809 7020 w +(produced is poor, but porting is easy.) 720 7140 w +(The table can be extended later.) 2617 7140 w +(This) 720 7296 w +(pass) 960 7296 w +(also) 1215 7296 w +(rewrites) 1447 7296 w +(some) 1871 7296 w +(complex) 2168 7296 w +(operators) 2618 7296 w +(into) 3120 7296 w +(procedure) 3345 7296 w +(calls.) 3875 7296 w +(Examples) 4190 7296 w +(include) 4688 7296 w cleartomark showpage saveobj restore @@ -6148,541 +6069,604 @@ 7 pagesetup 10 /LucidaSansUnicode00 f (\255 7 \255) 2783 480 w -(relative values are.) 720 840 w -(The goal is to compile the harder \(larger mark\) subtree first.) 1692 840 w +(64-bit multiply and divide.) 720 840 w +(In) 720 996 w +(the) 844 996 w +(same) 1032 996 w +(bottom-up) 1320 996 w +(pass) 1889 996 w +(of) 2143 996 w +(the) 2275 996 w +(tree,) 2464 996 w +(the) 2720 996 w +(nodes) 2909 996 w +(are) 3236 996 w +(labeled) 3422 996 w +(with) 3807 996 w +(a) 4046 996 w +(Sethi-Ullman) 4135 996 w +(com\255) 4802 996 w +(plexity) 720 1116 w +([Set70].) 1083 1116 w +(This) 1522 1116 w +(number) 1763 1116 w +(is) 2176 1116 w +(roughly) 2291 1116 w +(the) 2695 1116 w +(number) 2885 1116 w +(of) 3297 1116 w +(registers) 3430 1116 w +(required) 3889 1116 w +(to) 4335 1116 w +(compile) 4468 1116 w +(the) 4885 1116 w +(tree) 720 1236 w +(on) 948 1236 w +(an) 1109 1236 w +(ideal) 1264 1236 w +(machine.) 1534 1236 w +(An) 2044 1236 w +(addressable) 2213 1236 w +(node) 2834 1236 w +(is) 3114 1236 w +(marked) 3233 1236 w +(0.) 3638 1236 w +(A) 3804 1236 w +(function) 3912 1236 w +(call) 4352 1236 w +(is) 4555 1236 w +(marked) 4674 1236 w +(infinite.) 720 1356 w +(A) 1164 1356 w +(unary) 1272 1356 w +(operator) 1582 1356 w +(is) 2035 1356 w +(marked) 2153 1356 w +(as) 2557 1356 w +(the) 2701 1356 w +(maximum) 2894 1356 w +(of) 3418 1356 w +(1) 3554 1356 w +(and) 3655 1356 w +(the) 3873 1356 w +(mark) 4066 1356 w +(of) 4351 1356 w +(its) 4487 1356 w +(subtree.) 4642 1356 w +(A) 720 1476 w +(binary) 828 1476 w +(operator) 1169 1476 w +(with) 1623 1476 w +(equal) 1867 1476 w +(marks) 2171 1476 w +(on) 2508 1476 w +(its) 2670 1476 w +(subtrees) 2826 1476 w +(is) 3282 1476 w +(marked) 3401 1476 w +(with) 3806 1476 w +(a) 4050 1476 w +(subtree) 4144 1476 w +(mark) 4549 1476 w +(plus) 4835 1476 w +(1.) 720 1596 w +(A) 888 1596 w +(binary) 998 1596 w +(operator) 1341 1596 w +(with) 1797 1596 w +(unequal) 2043 1596 w +(marks) 2473 1596 w +(on) 2811 1596 w +(its) 2974 1596 w +(subtrees) 3131 1596 w +(is) 3588 1596 w +(marked) 3708 1596 w +(with) 4114 1596 w +(the) 4359 1596 w +(maximum) 4554 1596 w +(mark) 720 1716 w +(of) 1000 1716 w +(its) 1131 1716 w +(subtrees.) 1281 1716 w +(The) 1795 1716 w +(actual) 2009 1716 w +(values) 2332 1716 w +(of) 2671 1716 w +(the) 2803 1716 w +(marks) 2992 1716 w +(are) 3324 1716 w +(not) 3510 1716 w +(too) 3704 1716 w +(important,) 3897 1716 w +(but) 4441 1716 w +(the) 4637 1716 w +(rela\255) 4826 1716 w +(tive values are.) 720 1836 w +(The goal is to compile the harder \(larger mark\) subtree first.) 1511 1836 w 10 /LucidaSans-Demi f -(5.6.) 720 1080 w -(Code generation) 962 1080 w -10 /LucidaSansUnicode00 f -(Code) 720 1236 w -(is) 1039 1236 w -(generated) 1189 1236 w -(by) 1747 1236 w -(recursive) 1933 1236 w -(descent.) 2443 1236 w -(The) 2954 1236 w -(Sethi-Ullman) 3206 1236 w -(complexity) 3910 1236 w -(completely) 4513 1236 w -(guides) 720 1356 w -(the) 1083 1356 w -(order.) 1278 1356 w -(The) 1644 1356 w -(addressability) 1865 1356 w -(defines) 2579 1356 w -(the) 2973 1356 w -(leaves.) 3168 1356 w -(The) 3571 1356 w -(only) 3792 1356 w -(difficult) 4035 1356 w -(part) 4448 1356 w -(is) 4683 1356 w -(com\255) 4802 1356 w -(piling) 720 1476 w -(a) 1038 1476 w -(tree) 1138 1476 w -(that) 1373 1476 w -(has) 1609 1476 w -(two) 1822 1476 w -(infinite) 2042 1476 w -(\(function) 2428 1476 w -(call\)) 2907 1476 w -(subtrees.) 3149 1476 w -(In) 3675 1476 w -(this) 3811 1476 w -(case,) 4035 1476 w -(one) 4325 1476 w -(subtree) 4549 1476 w -(is) 4960 1476 w -(compiled) 720 1596 w -(into) 1205 1596 w -(the) 1434 1596 w -(return) 1629 1596 w -(register) 1968 1596 w -(\(usually) 2381 1596 w -(the) 2794 1596 w -(most) 2989 1596 w -(convenient) 3271 1596 w -(place) 3838 1596 w -(for) 4131 1596 w -(a) 4309 1596 w -(function) 4403 1596 w -(call\)) 4843 1596 w -(and) 720 1716 w -(then) 933 1716 w -(stored) 1183 1716 w -(on) 1525 1716 w -(the) 1681 1716 w -(stack.) 1869 1716 w -(The) 2218 1716 w -(other) 2432 1716 w -(subtree) 2722 1716 w -(is) 3121 1716 w -(compiled) 3234 1716 w -(into) 3712 1716 w -(the) 3934 1716 w -(return) 4122 1716 w -(register) 4454 1716 w -(and) 4860 1716 w -(then the operation is compiled with operands from the stack and the return register.) 720 1836 w -(There) 720 1992 w -(is) 1033 1992 w -(a) 1148 1992 w -(separate) 1238 1992 w -(boolean) 1687 1992 w -(code) 2109 1992 w -(generator) 2375 1992 w -(that) 2882 1992 w -(compiles) 3109 1992 w -(conditional) 3578 1992 w -(expressions.) 4153 1992 w -(This) 4835 1992 w -(is) 720 2112 w -(fundamentally) 847 2112 w -(different) 1585 2112 w -(from) 2049 2112 w -(compiling) 2327 2112 w -(an) 2852 2112 w -(arithmetic) 3015 2112 w -(expression.) 3551 2112 w -(The) 4192 2112 w -(result) 4419 2112 w -(of) 4741 2112 w -(the) 4885 2112 w -(boolean) 720 2232 w -(code) 1148 2232 w -(generator) 1420 2232 w -(is) 1933 2232 w -(the) 2055 2232 w -(position) 2252 2232 w -(of) 2687 2232 w -(the) 2827 2232 w -(program) 3024 2232 w -(counter) 3482 2232 w -(and) 3894 2232 w -(not) 4116 2232 w -(an) 4318 2232 w -(expression.) 4477 2232 w -(The) 720 2352 w -(boolean) 952 2352 w -(code) 1390 2352 w -(generator) 1672 2352 w -(makes) 2194 2352 w -(extensive) 2558 2352 w -(use) 3069 2352 w -(of) 3289 2352 w -(De) 3438 2352 w -(Morgan) 3620 2352 w +(5.6.) 720 2076 w +(Code generation) 962 2076 w +10 /LucidaSansUnicode00 f +(Code) 720 2232 w +(is) 1039 2232 w +(generated) 1189 2232 w +(by) 1747 2232 w +(recursive) 1933 2232 w +(descent.) 2443 2232 w +(The) 2954 2232 w +(Sethi-Ullman) 3206 2232 w +(complexity) 3910 2232 w +(completely) 4513 2232 w +(guides) 720 2352 w +(the) 1083 2352 w +(order.) 1278 2352 w +(The) 1644 2352 w +(addressability) 1865 2352 w +(defines) 2579 2352 w +(the) 2973 2352 w +(leaves.) 3168 2352 w +(The) 3571 2352 w +(only) 3792 2352 w +(difficult) 4035 2352 w +(part) 4448 2352 w +(is) 4683 2352 w +(com\255) 4802 2352 w +(piling) 720 2472 w +(a) 1038 2472 w +(tree) 1138 2472 w +(that) 1373 2472 w +(has) 1609 2472 w +(two) 1822 2472 w +(infinite) 2042 2472 w +(\(function) 2428 2472 w +(call\)) 2907 2472 w +(subtrees.) 3149 2472 w +(In) 3675 2472 w +(this) 3811 2472 w +(case,) 4035 2472 w +(one) 4325 2472 w +(subtree) 4549 2472 w +(is) 4960 2472 w +(compiled) 720 2592 w +(into) 1205 2592 w +(the) 1434 2592 w +(return) 1629 2592 w +(register) 1968 2592 w +(\(usually) 2381 2592 w +(the) 2794 2592 w +(most) 2989 2592 w +(convenient) 3271 2592 w +(place) 3838 2592 w +(for) 4131 2592 w +(a) 4309 2592 w +(function) 4403 2592 w +(call\)) 4843 2592 w +(and) 720 2712 w +(then) 933 2712 w +(stored) 1183 2712 w +(on) 1525 2712 w +(the) 1681 2712 w +(stack.) 1869 2712 w +(The) 2218 2712 w +(other) 2432 2712 w +(subtree) 2722 2712 w +(is) 3121 2712 w +(compiled) 3234 2712 w +(into) 3712 2712 w +(the) 3934 2712 w +(return) 4122 2712 w +(register) 4454 2712 w +(and) 4860 2712 w +(then the operation is compiled with operands from the stack and the return register.) 720 2832 w +(There) 720 2988 w +(is) 1033 2988 w +(a) 1148 2988 w +(separate) 1238 2988 w +(boolean) 1687 2988 w +(code) 2109 2988 w +(generator) 2375 2988 w +(that) 2882 2988 w +(compiles) 3109 2988 w +(conditional) 3578 2988 w +(expressions.) 4153 2988 w +(This) 4835 2988 w +(is) 720 3108 w +(fundamentally) 847 3108 w +(different) 1585 3108 w +(from) 2049 3108 w +(compiling) 2327 3108 w +(an) 2852 3108 w +(arithmetic) 3015 3108 w +(expression.) 3551 3108 w +(The) 4192 3108 w +(result) 4419 3108 w +(of) 4741 3108 w +(the) 4885 3108 w +(boolean) 720 3228 w +(code) 1148 3228 w +(generator) 1420 3228 w +(is) 1933 3228 w +(the) 2055 3228 w +(position) 2252 3228 w +(of) 2687 3228 w +(the) 2827 3228 w +(program) 3024 3228 w +(counter) 3482 3228 w +(and) 3894 3228 w +(not) 4116 3228 w +(an) 4318 3228 w +(expression.) 4477 3228 w +(The) 720 3348 w +(boolean) 952 3348 w +(code) 1390 3348 w +(generator) 1672 3348 w +(makes) 2194 3348 w +(extensive) 2558 3348 w +(use) 3069 3348 w +(of) 3289 3348 w +(De) 3438 3348 w +(Morgan) 3620 3348 w 10 /LucidaSansUnicode20 f -(\031) 3987 2352 w -10 /LucidaSansUnicode00 f -(s) 4019 2352 w -(rule.) 4120 2352 w -(The) 4422 2352 w -(boolean) 4653 2352 w -(code) 720 2472 w -(generator) 986 2472 w -(is) 1492 2472 w -(an) 1607 2472 w -(expanded) 1760 2472 w -(version) 2275 2472 w -(of) 2663 2472 w -(that) 2797 2472 w -(described) 3024 2472 w -(in) 3533 2472 w -(chapter) 3660 2472 w -(8) 4061 2472 w -(of) 4160 2472 w -(Aho,) 4294 2472 w -(Sethi,) 4554 2472 w -(and) 4860 2472 w -(Ullman [Aho87].) 720 2592 w -(There) 720 2748 w -(is) 1037 2748 w -(a) 1156 2748 w -(considerable) 1250 2748 w -(amount) 1906 2748 w -(of) 2315 2748 w -(talk) 2453 2748 w -(in) 2672 2748 w -(the) 2803 2748 w -(literature) 2998 2748 w -(about) 3481 2748 w -(automating) 3799 2748 w -(this) 4392 2748 w -(part) 4611 2748 w -(of) 4847 2748 w -(a) 4985 2748 w -(compiler) 720 2868 w -(with) 1190 2868 w -(a) 1442 2868 w -(machine) 1544 2868 w -(description.) 1999 2868 w -(Since) 2653 2868 w -(this) 2952 2868 w -(code) 3177 2868 w -(generator) 3454 2868 w -(is) 3971 2868 w -(so) 4097 2868 w -(small) 4255 2868 w -(\(less) 4558 2868 w -(than) 4824 2868 w -(500 lines of C\) and easy, it hardly seems worth the effort.) 720 2988 w +(\031) 3987 3348 w +10 /LucidaSansUnicode00 f +(s) 4019 3348 w +(rule.) 4120 3348 w +(The) 4422 3348 w +(boolean) 4653 3348 w +(code) 720 3468 w +(generator) 986 3468 w +(is) 1492 3468 w +(an) 1607 3468 w +(expanded) 1760 3468 w +(version) 2275 3468 w +(of) 2663 3468 w +(that) 2797 3468 w +(described) 3024 3468 w +(in) 3533 3468 w +(chapter) 3660 3468 w +(8) 4061 3468 w +(of) 4160 3468 w +(Aho,) 4294 3468 w +(Sethi,) 4554 3468 w +(and) 4860 3468 w +(Ullman [Aho87].) 720 3588 w +(There) 720 3744 w +(is) 1037 3744 w +(a) 1156 3744 w +(considerable) 1250 3744 w +(amount) 1906 3744 w +(of) 2315 3744 w +(talk) 2453 3744 w +(in) 2672 3744 w +(the) 2803 3744 w +(literature) 2998 3744 w +(about) 3481 3744 w +(automating) 3799 3744 w +(this) 4392 3744 w +(part) 4611 3744 w +(of) 4847 3744 w +(a) 4985 3744 w +(compiler) 720 3864 w +(with) 1190 3864 w +(a) 1442 3864 w +(machine) 1544 3864 w +(description.) 1999 3864 w +(Since) 2653 3864 w +(this) 2952 3864 w +(code) 3177 3864 w +(generator) 3454 3864 w +(is) 3971 3864 w +(so) 4097 3864 w +(small) 4255 3864 w +(\(less) 4558 3864 w +(than) 4824 3864 w +(500 lines of C\) and easy, it hardly seems worth the effort.) 720 3984 w 10 /LucidaSans-Demi f -(5.7.) 720 3228 w -(Registerization) 962 3228 w -10 /LucidaSansUnicode00 f -(Up) 720 3384 w -(to) 887 3384 w -(now,) 1020 3384 w -(the) 1287 3384 w -(compiler) 1477 3384 w -(has) 1935 3384 w -(operated) 2138 3384 w -(on) 2605 3384 w -(syntax) 2763 3384 w -(trees) 3117 3384 w -(that) 3394 3384 w -(are) 3621 3384 w -(roughly) 3809 3384 w -(equivalent) 4214 3384 w -(to) 4751 3384 w -(the) 4885 3384 w -(original) 720 3504 w -(source) 1145 3504 w -(language.) 1524 3504 w -(The) 2088 3504 w -(previous) 2326 3504 w -(pass) 2797 3504 w -(has) 3073 3504 w -(produced) 3297 3504 w -(machine) 3813 3504 w -(language) 4277 3504 w -(in) 4776 3504 w -(an) 4923 3504 w -(internal) 720 3624 w -(format.) 1134 3624 w -(The) 1565 3624 w -(next) 1789 3624 w -(two) 2048 3624 w -(passes) 2266 3624 w -(operate) 2636 3624 w -(on) 3048 3624 w -(the) 3214 3624 w -(internal) 3412 3624 w -(machine) 3826 3624 w -(language) 4278 3624 w -(struc\255) 4765 3624 w -(tures.) 720 3744 w -(The) 1079 3744 w -(purpose) 1308 3744 w -(of) 1753 3744 w -(the) 1899 3744 w -(next) 2102 3744 w -(pass) 2366 3744 w -(is) 2634 3744 w -(to) 2761 3744 w -(reintroduce) 2906 3744 w -(registers) 3512 3744 w -(for) 3983 3744 w -(heavily) 4169 3744 w -(used) 4551 3744 w -(vari\255) 4830 3744 w -(ables.) 720 3864 w -(All of the variables that can be potentially registerized within a procedure are) 720 4020 w -(placed) 4511 4020 w -(in) 4861 4020 w -(a) 4985 4020 w -(table.) 720 4140 w -(\(Suitable) 1071 4140 w -(variables) 1536 4140 w -(are) 2014 4140 w -(any) 2213 4140 w -(automatic) 2429 4140 w -(or) 2956 4140 w -(external) 3105 4140 w -(scalars) 3549 4140 w -(that) 3929 4140 w -(do) 4167 4140 w -(not) 4338 4140 w -(have) 4544 4140 w -(their) 4815 4140 w -(addresses) 720 4260 w -(extracted.) 1243 4260 w -(Some) 1801 4260 w -(constants) 2102 4260 w -(that) 2606 4260 w -(are) 2834 4260 w -(hard) 3023 4260 w -(to) 3281 4260 w -(reference) 3416 4260 w -(are) 3909 4260 w -(also) 4098 4260 w -(considered) 4331 4260 w -(for) 4901 4260 w -(registerization.\)) 720 4380 w -(Four) 1557 4380 w -(separate) 1812 4380 w -(data) 2263 4380 w -(flow) 2509 4380 w -(equations) 2749 4380 w -(are) 3261 4380 w -(evaluated) 3449 4380 w -(over) 3950 4380 w -(the) 4196 4380 w -(procedure) 4387 4380 w -(on) 4917 4380 w -(all) 720 4500 w -(of) 869 4500 w -(these) 1003 4500 w -(variables.) 1301 4500 w -(Two) 1832 4500 w -(of) 2069 4500 w -(the) 2204 4500 w -(equations) 2396 4500 w -(are) 2909 4500 w -(the) 3098 4500 w -(normal) 3290 4500 w -(set-behind) 3668 4500 w -(and) 4242 4500 w -(used-ahead) 4459 4500 w -(bits) 720 4620 w -(that) 944 4620 w -(define) 1179 4620 w -(the) 1526 4620 w -(life) 1725 4620 w -(of) 1920 4620 w -(a) 2062 4620 w -(variable.) 2161 4620 w -(The) 2649 4620 w -(two) 2874 4620 w -(new) 3093 4620 w -(bits) 3332 4620 w -(tell) 3556 4620 w -(if) 3751 4620 w -(a) 3861 4620 w -(variable) 3960 4620 w -(life) 4384 4620 w -(crosses) 4579 4620 w -(a) 4985 4620 w -(function) 720 4740 w -(call) 1156 4740 w -(ahead) 1355 4740 w -(or) 1681 4740 w -(behind.) 1819 4740 w -(By) 2254 4740 w -(examining) 2400 4740 w -(a) 2945 4740 w -(variable) 3036 4740 w -(over) 3452 4740 w -(its) 3698 4740 w -(lifetime,) 3851 4740 w -(it) 4285 4740 w -(is) 4387 4740 w -(possible) 4503 4740 w -(to) 4942 4740 w -(get) 720 4860 w -(a) 909 4860 w -(cost) 998 4860 w -(for) 1232 4860 w -(registerizing.) 1405 4860 w -(Loops) 2115 4860 w -(are) 2438 4860 w -(detected) 2623 4860 w -(and) 3075 4860 w -(the) 3288 4860 w -(costs) 3476 4860 w -(are) 3760 4860 w -(multiplied) 3945 4860 w -(by) 4468 4860 w -(three) 4616 4860 w -(for) 4901 4860 w -(every) 720 4980 w -(level) 1013 4980 w -(of) 1271 4980 w -(loop) 1405 4980 w -(nesting.) 1655 4980 w -(Costs) 2114 4980 w -(are) 2419 4980 w -(sorted) 2607 4980 w -(and) 2952 4980 w -(the) 3168 4980 w -(variables) 3359 4980 w -(are) 3826 4980 w -(replaced) 4014 4980 w -(by) 4465 4980 w -(available) 4617 4980 w -(registers on a greedy basis.) 720 5100 w -(The) 720 5256 w -(68020) 941 5256 w -(has) 1296 5256 w -(two) 1504 5256 w -(different) 1719 5256 w -(types) 2177 5256 w -(of) 2476 5256 w -(registers.) 2614 5256 w -(For) 3142 5256 w -(the) 3338 5256 w -(68020,) 3533 5256 w -(two) 3921 5256 w -(different) 4137 5256 w -(costs) 4596 5256 w -(are) 4888 5256 w -(calculated) 720 5376 w -(for) 1242 5376 w -(each) 1415 5376 w -(variable) 1672 5376 w -(life) 2085 5376 w -(and) 2269 5376 w -(the) 2482 5376 w -(register) 2670 5376 w -(type) 3076 5376 w -(that) 3317 5376 w -(affords) 3541 5376 w -(the) 3919 5376 w -(better) 4107 5376 w -(cost) 4430 5376 w -(is) 4663 5376 w -(used.) 4776 5376 w -(Ties are broken by counting the number of available registers of each type.) 720 5496 w -(Note) 720 5652 w -(that) 988 5652 w -(externals) 1219 5652 w -(are) 1708 5652 w -(registerized) 1901 5652 w -(together) 2520 5652 w -(with) 2973 5652 w -(automatics.) 3219 5652 w -(This) 3855 5652 w -(is) 4101 5652 w -(done) 4222 5652 w -(by) 4505 5652 w -(evaluat\255) 4661 5652 w -(ing) 720 5772 w -(the) 911 5772 w -(semantics) 1104 5772 w -(of) 1627 5772 w -(a) 1762 5772 w +(5.7.) 720 4224 w +(Registerization) 962 4224 w +10 /LucidaSansUnicode00 f +(Up) 720 4380 w +(to) 887 4380 w +(now,) 1020 4380 w +(the) 1287 4380 w +(compiler) 1477 4380 w +(has) 1935 4380 w +(operated) 2138 4380 w +(on) 2605 4380 w +(syntax) 2763 4380 w +(trees) 3117 4380 w +(that) 3394 4380 w +(are) 3621 4380 w +(roughly) 3809 4380 w +(equivalent) 4214 4380 w +(to) 4751 4380 w +(the) 4885 4380 w +(original) 720 4500 w +(source) 1145 4500 w +(language.) 1524 4500 w +(The) 2088 4500 w +(previous) 2326 4500 w +(pass) 2797 4500 w +(has) 3073 4500 w +(produced) 3297 4500 w +(machine) 3813 4500 w +(language) 4277 4500 w +(in) 4776 4500 w +(an) 4923 4500 w +(internal) 720 4620 w +(format.) 1134 4620 w +(The) 1565 4620 w +(next) 1789 4620 w +(two) 2048 4620 w +(passes) 2266 4620 w +(operate) 2636 4620 w +(on) 3048 4620 w +(the) 3214 4620 w +(internal) 3412 4620 w +(machine) 3826 4620 w +(language) 4278 4620 w +(struc\255) 4765 4620 w +(tures.) 720 4740 w +(The) 1079 4740 w +(purpose) 1308 4740 w +(of) 1753 4740 w +(the) 1899 4740 w +(next) 2102 4740 w +(pass) 2366 4740 w +(is) 2634 4740 w +(to) 2761 4740 w +(reintroduce) 2906 4740 w +(registers) 3512 4740 w +(for) 3983 4740 w +(heavily) 4169 4740 w +(used) 4551 4740 w +(vari\255) 4830 4740 w +(ables.) 720 4860 w +(All of the variables that can be potentially registerized within a procedure are) 720 5016 w +(placed) 4511 5016 w +(in) 4861 5016 w +(a) 4985 5016 w +(table.) 720 5136 w +(\(Suitable) 1071 5136 w +(variables) 1536 5136 w +(are) 2014 5136 w +(any) 2213 5136 w +(automatic) 2429 5136 w +(or) 2956 5136 w +(external) 3105 5136 w +(scalars) 3549 5136 w +(that) 3929 5136 w +(do) 4167 5136 w +(not) 4338 5136 w +(have) 4544 5136 w +(their) 4815 5136 w +(addresses) 720 5256 w +(extracted.) 1243 5256 w +(Some) 1801 5256 w +(constants) 2102 5256 w +(that) 2606 5256 w +(are) 2834 5256 w +(hard) 3023 5256 w +(to) 3281 5256 w +(reference) 3416 5256 w +(are) 3909 5256 w +(also) 4098 5256 w +(considered) 4331 5256 w +(for) 4901 5256 w +(registerization.\)) 720 5376 w +(Four) 1557 5376 w +(separate) 1812 5376 w +(data) 2263 5376 w +(flow) 2509 5376 w +(equations) 2749 5376 w +(are) 3261 5376 w +(evaluated) 3449 5376 w +(over) 3950 5376 w +(the) 4196 5376 w +(procedure) 4387 5376 w +(on) 4917 5376 w +(all) 720 5496 w +(of) 869 5496 w +(these) 1003 5496 w +(variables.) 1301 5496 w +(Two) 1832 5496 w +(of) 2069 5496 w +(the) 2204 5496 w +(equations) 2396 5496 w +(are) 2909 5496 w +(the) 3098 5496 w +(normal) 3290 5496 w +(set-behind) 3668 5496 w +(and) 4242 5496 w +(used-ahead) 4459 5496 w +(bits) 720 5616 w +(that) 944 5616 w +(define) 1179 5616 w +(the) 1526 5616 w +(life) 1725 5616 w +(of) 1920 5616 w +(a) 2062 5616 w +(variable.) 2161 5616 w +(The) 2649 5616 w +(two) 2874 5616 w +(new) 3093 5616 w +(bits) 3332 5616 w +(tell) 3556 5616 w +(if) 3751 5616 w +(a) 3861 5616 w +(variable) 3960 5616 w +(life) 4384 5616 w +(crosses) 4579 5616 w +(a) 4985 5616 w +(function) 720 5736 w +(call) 1156 5736 w +(ahead) 1355 5736 w +(or) 1681 5736 w +(behind.) 1819 5736 w +(By) 2254 5736 w +(examining) 2400 5736 w +(a) 2945 5736 w +(variable) 3036 5736 w +(over) 3452 5736 w +(its) 3698 5736 w +(lifetime,) 3851 5736 w +(it) 4285 5736 w +(is) 4387 5736 w +(possible) 4503 5736 w +(to) 4942 5736 w +(get) 720 5856 w +(a) 909 5856 w +(cost) 998 5856 w +(for) 1232 5856 w +(registerizing.) 1405 5856 w +(Loops) 2115 5856 w +(are) 2438 5856 w +(detected) 2623 5856 w +(and) 3075 5856 w +(the) 3288 5856 w +(costs) 3476 5856 w +(are) 3760 5856 w +(multiplied) 3945 5856 w +(by) 4468 5856 w +(three) 4616 5856 w +(for) 4901 5856 w +(every) 720 5976 w +(level) 1013 5976 w +(of) 1271 5976 w +(loop) 1405 5976 w +(nesting.) 1655 5976 w +(Costs) 2114 5976 w +(are) 2419 5976 w +(sorted) 2607 5976 w +(and) 2952 5976 w +(the) 3168 5976 w +(variables) 3359 5976 w +(are) 3826 5976 w +(replaced) 4014 5976 w +(by) 4465 5976 w +(available) 4617 5976 w +(registers on a greedy basis.) 720 6096 w +(The) 720 6252 w +(68020) 941 6252 w +(has) 1296 6252 w +(two) 1504 6252 w +(different) 1719 6252 w +(types) 2177 6252 w +(of) 2476 6252 w +(registers.) 2614 6252 w +(For) 3142 6252 w +(the) 3338 6252 w +(68020,) 3533 6252 w +(two) 3921 6252 w +(different) 4137 6252 w +(costs) 4596 6252 w +(are) 4888 6252 w +(calculated) 720 6372 w +(for) 1242 6372 w +(each) 1415 6372 w +(variable) 1672 6372 w +(life) 2085 6372 w +(and) 2269 6372 w +(the) 2482 6372 w +(register) 2670 6372 w +(type) 3076 6372 w +(that) 3317 6372 w +(affords) 3541 6372 w +(the) 3919 6372 w +(better) 4107 6372 w +(cost) 4430 6372 w +(is) 4663 6372 w +(used.) 4776 6372 w +(Ties are broken by counting the number of available registers of each type.) 720 6492 w +(Note) 720 6648 w +(that) 988 6648 w +(externals) 1219 6648 w +(are) 1708 6648 w +(registerized) 1901 6648 w +(together) 2520 6648 w +(with) 2973 6648 w +(automatics.) 3219 6648 w +(This) 3855 6648 w +(is) 4101 6648 w +(done) 4222 6648 w +(by) 4505 6648 w +(evaluat\255) 4661 6648 w +(ing) 720 6768 w +(the) 911 6768 w +(semantics) 1104 6768 w +(of) 1627 6768 w +(a) 1762 6768 w 10 /LucidaSansUnicode20 f -(\030\030) 1854 5772 w -10 /LucidaSansUnicode00 f -(call) 1918 5772 w +(\030\030) 1854 6768 w +10 /LucidaSansUnicode00 f +(call) 1918 6768 w 10 /LucidaSansUnicode20 f -(\031\031) 2082 5772 w -10 /LucidaSansUnicode00 f -(instruction) 2183 5772 w -(differently) 2742 5772 w -(for) 3278 5772 w -(externals) 3454 5772 w -(and) 3939 5772 w -(automatics.) 4156 5772 w -(Since) 4788 5772 w -(a) 720 5892 w -(call) 809 5892 w -(goes) 1007 5892 w -(outside) 1271 5892 w -(the) 1664 5892 w -(local) 1853 5892 w -(procedure,) 2112 5892 w -(it) 2673 5892 w -(is) 2774 5892 w -(assumed) 2889 5892 w -(that) 3355 5892 w -(a) 3581 5892 w -(call) 3671 5892 w -(references) 3870 5892 w -(all) 4412 5892 w -(externals.) 4560 5892 w -(Similarly,) 720 6012 w -(externals) 1198 6012 w -(are) 1681 6012 w -(assumed) 1868 6012 w -(to) 2334 6012 w -(be) 2467 6012 w -(set) 2620 6012 w -(before) 2798 6012 w -(an) 3146 6012 w +(\031\031) 2082 6768 w +10 /LucidaSansUnicode00 f +(instruction) 2183 6768 w +(differently) 2742 6768 w +(for) 3278 6768 w +(externals) 3454 6768 w +(and) 3939 6768 w +(automatics.) 4156 6768 w +(Since) 4788 6768 w +(a) 720 6888 w +(call) 809 6888 w +(goes) 1007 6888 w +(outside) 1271 6888 w +(the) 1664 6888 w +(local) 1853 6888 w +(procedure,) 2112 6888 w +(it) 2673 6888 w +(is) 2774 6888 w +(assumed) 2889 6888 w +(that) 3355 6888 w +(a) 3581 6888 w +(call) 3671 6888 w +(references) 3870 6888 w +(all) 4412 6888 w +(externals.) 4560 6888 w +(Similarly,) 720 7008 w +(externals) 1198 7008 w +(are) 1681 7008 w +(assumed) 1868 7008 w +(to) 2334 7008 w +(be) 2467 7008 w +(set) 2620 7008 w +(before) 2798 7008 w +(an) 3146 7008 w 10 /LucidaSansUnicode20 f -(\030\030) 3297 6012 w -10 /LucidaSansUnicode00 f -(entry) 3361 6012 w +(\030\030) 3297 7008 w +10 /LucidaSansUnicode00 f +(entry) 3361 7008 w 10 /LucidaSansUnicode20 f -(\031\031) 3609 6012 w -10 /LucidaSansUnicode00 f -(instruction) 3707 6012 w -(and) 4263 6012 w -(assumed) 4477 6012 w -(to) 4942 6012 w -(be) 720 6132 w -(referenced) 877 6132 w -(after) 1434 6132 w -(a) 1698 6132 w +(\031\031) 3609 7008 w +10 /LucidaSansUnicode00 f +(instruction) 3707 7008 w +(and) 4263 7008 w +(assumed) 4477 7008 w +(to) 4942 7008 w +(be) 720 7128 w +(referenced) 877 7128 w +(after) 1434 7128 w +(a) 1698 7128 w 10 /LucidaSansUnicode20 f -(\030\030) 1791 6132 w -10 /LucidaSansUnicode00 f -(return) 1855 6132 w +(\030\030) 1791 7128 w +10 /LucidaSansUnicode00 f +(return) 1855 7128 w 10 /LucidaSansUnicode20 f -(\031\031) 2154 6132 w -10 /LucidaSansUnicode00 f -(instruction.) 2257 6132 w -(This) 2882 6132 w -(makes) 3126 6132 w -(sure) 3478 6132 w -(that) 3727 6132 w -(externals) 3957 6132 w -(are) 4444 6132 w -(in) 4635 6132 w -(mem\255) 4765 6132 w -(ory across calls.) 720 6252 w -(The overall results are satisfactory.) 720 6408 w -(It would be nice to be able to do this) 2484 6408 w -(processing) 4301 6408 w -(in) 4861 6408 w -(a) 4985 6408 w -(machine-independent) 720 6528 w -(way,) 1830 6528 w -(but) 2081 6528 w -(it) 2278 6528 w -(is) 2379 6528 w -(impossible) 2494 6528 w -(to) 3054 6528 w -(get) 3187 6528 w -(all) 3377 6528 w -(of) 3525 6528 w -(the) 3658 6528 w -(costs) 3848 6528 w -(and) 4134 6528 w -(side) 4349 6528 w -(effects) 4583 6528 w -(of) 4942 6528 w -(different choices by examining the parse tree.) 720 6648 w -(Most) 720 6804 w -(of) 1023 6804 w -(the) 1189 6804 w -(code) 1412 6804 w -(in) 1711 6804 w -(the) 1870 6804 w -(registerization) 2093 6804 w -(pass) 2864 6804 w -(is) 3153 6804 w -(machine-independent.) 3302 6804 w -(The) 4510 6804 w -(major) 4760 6804 w -(machine-dependency) 720 6924 w -(is) 1820 6924 w -(in) 1950 6924 w -(examining) 2091 6924 w -(a) 2650 6924 w -(machine) 2755 6924 w -(instruction) 3213 6924 w -(to) 3785 6924 w -(ask) 3933 6924 w -(if) 4147 6924 w -(it) 4263 6924 w -(sets) 4379 6924 w -(or) 4624 6924 w -(refer\255) 4776 6924 w -(ences a variable.) 720 7044 w +(\031\031) 2154 7128 w +10 /LucidaSansUnicode00 f +(instruction.) 2257 7128 w +(This) 2882 7128 w +(makes) 3126 7128 w +(sure) 3478 7128 w +(that) 3727 7128 w +(externals) 3957 7128 w +(are) 4444 7128 w +(in) 4635 7128 w +(mem\255) 4765 7128 w +(ory across calls.) 720 7248 w cleartomark showpage saveobj restore @@ -6693,448 +6677,432 @@ 8 pagesetup 10 /LucidaSansUnicode00 f (\255 8 \255) 2783 480 w +(The overall results are satisfactory.) 720 840 w +(It would be nice to be able to do this) 2484 840 w +(processing) 4301 840 w +(in) 4861 840 w +(a) 4985 840 w +(machine-independent) 720 960 w +(way,) 1830 960 w +(but) 2081 960 w +(it) 2278 960 w +(is) 2379 960 w +(impossible) 2494 960 w +(to) 3054 960 w +(get) 3187 960 w +(all) 3377 960 w +(of) 3525 960 w +(the) 3658 960 w +(costs) 3848 960 w +(and) 4134 960 w +(side) 4349 960 w +(effects) 4583 960 w +(of) 4942 960 w +(different choices by examining the parse tree.) 720 1080 w +(Most) 720 1236 w +(of) 1023 1236 w +(the) 1189 1236 w +(code) 1412 1236 w +(in) 1711 1236 w +(the) 1870 1236 w +(registerization) 2093 1236 w +(pass) 2864 1236 w +(is) 3153 1236 w +(machine-independent.) 3302 1236 w +(The) 4510 1236 w +(major) 4760 1236 w +(machine-dependency) 720 1356 w +(is) 1820 1356 w +(in) 1950 1356 w +(examining) 2091 1356 w +(a) 2650 1356 w +(machine) 2755 1356 w +(instruction) 3213 1356 w +(to) 3785 1356 w +(ask) 3933 1356 w +(if) 4147 1356 w +(it) 4263 1356 w +(sets) 4379 1356 w +(or) 4624 1356 w +(refer\255) 4776 1356 w +(ences a variable.) 720 1476 w 10 /LucidaSans-Demi f -(5.8.) 720 840 w -(Machine code optimization) 962 840 w -10 /LucidaSansUnicode00 f -(The) 720 996 w -(next) 948 996 w -(pass) 1211 996 w -(walks) 1478 996 w -(the) 1795 996 w -(machine) 1998 996 w -(code) 2454 996 w -(for) 2733 996 w -(opportunistic) 2920 996 w -(optimizations.) 3615 996 w -(For) 4391 996 w -(the) 4595 996 w -(most) 4798 996 w -(part,) 720 1116 w -(this) 981 1116 w -(is) 1193 1116 w -(highly) 1306 1116 w -(specific) 1635 1116 w -(to) 2035 1116 w -(a) 2166 1116 w -(particular processor.) 2254 1116 w -(One optimization that is performed) 3321 1116 w -(on) 720 1236 w -(all) 883 1236 w -(of) 1036 1236 w -(the) 1174 1236 w -(processors) 1369 1236 w -(is) 1937 1236 w -(the) 2058 1236 w -(removal) 2254 1236 w -(of) 2682 1236 w -(unnecessary) 2821 1236 w +(5.8.) 720 1716 w +(Machine code optimization) 962 1716 w +10 /LucidaSansUnicode00 f +(The) 720 1872 w +(next) 948 1872 w +(pass) 1211 1872 w +(walks) 1478 1872 w +(the) 1795 1872 w +(machine) 1998 1872 w +(code) 2454 1872 w +(for) 2733 1872 w +(opportunistic) 2920 1872 w +(optimizations.) 3615 1872 w +(For) 4391 1872 w +(the) 4595 1872 w +(most) 4798 1872 w +(part,) 720 1992 w +(this) 981 1992 w +(is) 1193 1992 w +(highly) 1306 1992 w +(specific) 1635 1992 w +(to) 2035 1992 w +(a) 2166 1992 w +(particular processor.) 2254 1992 w +(One optimization that is performed) 3321 1992 w +(on) 720 2112 w +(all) 883 2112 w +(of) 1036 2112 w +(the) 1174 2112 w +(processors) 1369 2112 w +(is) 1937 2112 w +(the) 2058 2112 w +(removal) 2254 2112 w +(of) 2682 2112 w +(unnecessary) 2821 2112 w 10 /LucidaSansUnicode20 f -(\030\030) 3461 1236 w -10 /LucidaSansUnicode00 f -(move) 3525 1236 w +(\030\030) 3461 2112 w +10 /LucidaSansUnicode00 f +(move) 3525 2112 w 10 /LucidaSansUnicode20 f -(\031\031) 3787 1236 w -10 /LucidaSansUnicode00 f -(instructions.) 3892 1236 w -(Ironically,) 4570 1236 w -(most) 720 1356 w -(of) 1004 1356 w -(these) 1144 1356 w -(instructions) 1448 1356 w -(were) 2063 1356 w -(inserted) 2335 1356 w -(by) 2772 1356 w -(the) 2929 1356 w -(previous) 3126 1356 w -(pass.) 3583 1356 w -(There) 3909 1356 w -(are) 4229 1356 w -(two) 4422 1356 w -(patterns) 4638 1356 w -(that) 720 1476 w -(are) 953 1476 w -(repetitively) 1147 1476 w -(matched) 1726 1476 w -(and) 2185 1476 w -(replaced) 2407 1476 w -(until) 2864 1476 w -(no) 3126 1476 w -(more) 3292 1476 w -(matches) 3586 1476 w -(are) 4034 1476 w -(found.) 4229 1476 w -(The) 4621 1476 w -(first) 4845 1476 w -(tries to remove ) 720 1596 w +(\031\031) 3787 2112 w +10 /LucidaSansUnicode00 f +(instructions.) 3892 2112 w +(Ironically,) 4570 2112 w +(most) 720 2232 w +(of) 1004 2232 w +(these) 1144 2232 w +(instructions) 1448 2232 w +(were) 2063 2232 w +(inserted) 2335 2232 w +(by) 2772 2232 w +(the) 2929 2232 w +(previous) 3126 2232 w +(pass.) 3583 2232 w +(There) 3909 2232 w +(are) 4229 2232 w +(two) 4422 2232 w +(patterns) 4638 2232 w +(that) 720 2352 w +(are) 953 2352 w +(repetitively) 1147 2352 w +(matched) 1726 2352 w +(and) 2185 2352 w +(replaced) 2407 2352 w +(until) 2864 2352 w +(no) 3126 2352 w +(more) 3292 2352 w +(matches) 3586 2352 w +(are) 4034 2352 w +(found.) 4229 2352 w +(The) 4621 2352 w +(first) 4845 2352 w +(tries to remove ) 720 2472 w 10 /LucidaSansUnicode20 f -(\030\030) 1487 1596 w -10 /LucidaSansUnicode00 f -(move) 1551 1596 w +(\030\030) 1487 2472 w +10 /LucidaSansUnicode00 f +(move) 1551 2472 w 10 /LucidaSansUnicode20 f -(\031\031) 1813 1596 w -10 /LucidaSansUnicode00 f -(instructions by relabeling variables.) 1909 1596 w -(When) 720 1752 w -(a) 1026 1752 w +(\031\031) 1813 2472 w +10 /LucidaSansUnicode00 f +(instructions by relabeling variables.) 1909 2472 w +(When) 720 2628 w +(a) 1026 2628 w 10 /LucidaSansUnicode20 f -(\030\030) 1122 1752 w -10 /LucidaSansUnicode00 f -(move) 1186 1752 w +(\030\030) 1122 2628 w +10 /LucidaSansUnicode00 f +(move) 1186 2628 w 10 /LucidaSansUnicode20 f -(\031\031) 1448 1752 w -10 /LucidaSansUnicode00 f -(instruction) 1553 1752 w -(is) 2116 1752 w -(encountered,) 2237 1752 w -(if) 2917 1752 w -(the) 3024 1752 w -(destination) 3220 1752 w -(variable) 3803 1752 w -(is) 4224 1752 w -(set) 4345 1752 w -(before) 4530 1752 w -(the) 4885 1752 w -(source) 720 1872 w -(variable) 1085 1872 w -(is) 1508 1872 w -(referenced,) 1631 1872 w -(then) 2225 1872 w -(all) 2485 1872 w -(of) 2641 1872 w -(the) 2782 1872 w -(references) 2980 1872 w -(to) 3529 1872 w -(the) 3669 1872 w -(destination) 3866 1872 w -(variable) 4450 1872 w -(can) 4872 1872 w -(be) 720 1992 w -(renamed) 872 1992 w -(to) 1331 1992 w -(the) 1462 1992 w -(source) 1650 1992 w -(and) 2005 1992 w -(the) 2218 1992 w +(\031\031) 1448 2628 w +10 /LucidaSansUnicode00 f +(instruction) 1553 2628 w +(is) 2116 2628 w +(encountered,) 2237 2628 w +(if) 2917 2628 w +(the) 3024 2628 w +(destination) 3220 2628 w +(variable) 3803 2628 w +(is) 4224 2628 w +(set) 4345 2628 w +(before) 4530 2628 w +(the) 4885 2628 w +(source) 720 2748 w +(variable) 1085 2748 w +(is) 1508 2748 w +(referenced,) 1631 2748 w +(then) 2225 2748 w +(all) 2485 2748 w +(of) 2641 2748 w +(the) 2782 2748 w +(references) 2980 2748 w +(to) 3529 2748 w +(the) 3669 2748 w +(destination) 3866 2748 w +(variable) 4450 2748 w +(can) 4872 2748 w +(be) 720 2868 w +(renamed) 872 2868 w +(to) 1331 2868 w +(the) 1462 2868 w +(source) 1650 2868 w +(and) 2005 2868 w +(the) 2218 2868 w 10 /LucidaSansUnicode20 f -(\030\030) 2406 1992 w -10 /LucidaSansUnicode00 f -(move) 2470 1992 w +(\030\030) 2406 2868 w +10 /LucidaSansUnicode00 f +(move) 2470 2868 w 10 /LucidaSansUnicode20 f -(\031\031) 2732 1992 w -10 /LucidaSansUnicode00 f -(can) 2829 1992 w -(be) 3030 1992 w -(deleted.) 3182 1992 w -(This) 3639 1992 w -(transformation) 3877 1992 w -(uses) 4632 1992 w -(the) 4885 1992 w -(reverse data flow set up in the previous pass.) 720 2112 w -(An) 720 2268 w -(example) 890 2268 w -(of) 1342 2268 w -(this) 1479 2268 w -(pattern) 1697 2268 w -(is) 2088 2268 w -(depicted) 2208 2268 w -(in) 2666 2268 w -(the) 2797 2268 w -(following) 2992 2268 w -(table.) 3479 2268 w -(The) 3823 2268 w -(pattern) 4044 2268 w -(is) 4435 2268 w -(in) 4555 2268 w -(the) 4686 2268 w -(left) 4881 2268 w -(column and the replacement action is in the right column.) 720 2388 w -10 /LucidaTypewriter f -(MOVE a->b) 1152 2568 w -10 /LucidaSansUnicode00 f -(\(remove\)) 2592 2568 w -(\(sequence with no mention of) 1152 2688 w -10 /LucidaTypewriter f -(a) 2628 2688 w -10 /LucidaSansUnicode00 f -(\)) 2700 2688 w -10 /LucidaTypewriter f -(USE) 1152 2808 w -(b) 1512 2808 w -(USE) 2592 2808 w -(a) 2952 2808 w -10 /LucidaSansUnicode00 f -(\(sequence with no mention of) 1152 2928 w -10 /LucidaTypewriter f -(a) 2628 2928 w -10 /LucidaSansUnicode00 f -(\)) 2700 2928 w -10 /LucidaTypewriter f -(SET) 1152 3048 w -(b) 1512 3048 w -(SET) 2592 3048 w -(b) 2952 3048 w -10 /LucidaSansUnicode00 f -(Experiments) 720 3264 w -(have) 1360 3264 w -(shown) 1622 3264 w -(that) 1972 3264 w -(it) 2200 3264 w -(is) 2303 3264 w -(marginally) 2420 3264 w -(worthwhile) 2964 3264 w -(to) 3532 3264 w -(rename) 3667 3264 w -(uses) 4067 3264 w -(of) 4325 3264 w -(the) 4461 3264 w -(destina\255) 4654 3264 w -(tion variable with uses of the source variable up to the first use of the source variable.) 720 3384 w -(The) 720 3540 w -(second) 941 3540 w -(transform) 1325 3540 w -(will) 1843 3540 w -(do) 2047 3540 w -(relabeling) 2211 3540 w -(without) 2733 3540 w -(deleting) 3138 3540 w -(instructions.) 3572 3540 w -(When) 4249 3540 w -(a) 4555 3540 w +(\031\031) 2732 2868 w +10 /LucidaSansUnicode00 f +(can) 2829 2868 w +(be) 3030 2868 w +(deleted.) 3182 2868 w +(This) 3639 2868 w +(transformation) 3877 2868 w +(uses) 4632 2868 w +(the) 4885 2868 w +(reverse data flow set up in the previous pass.) 720 2988 w +(An) 720 3144 w +(example) 890 3144 w +(of) 1342 3144 w +(this) 1479 3144 w +(pattern) 1697 3144 w +(is) 2088 3144 w +(depicted) 2208 3144 w +(in) 2666 3144 w +(the) 2797 3144 w +(following) 2992 3144 w +(table.) 3479 3144 w +(The) 3823 3144 w +(pattern) 4044 3144 w +(is) 4435 3144 w +(in) 4555 3144 w +(the) 4686 3144 w +(left) 4881 3144 w +(column and the replacement action is in the right column.) 720 3264 w +10 /LucidaTypewriter f +(MOVE a->b) 1152 3444 w +10 /LucidaSansUnicode00 f +(\(remove\)) 2592 3444 w +(\(sequence with no mention of) 1152 3564 w +10 /LucidaTypewriter f +(a) 2628 3564 w +10 /LucidaSansUnicode00 f +(\)) 2700 3564 w +10 /LucidaTypewriter f +(USE) 1152 3684 w +(b) 1512 3684 w +(USE) 2592 3684 w +(a) 2952 3684 w +10 /LucidaSansUnicode00 f +(\(sequence with no mention of) 1152 3804 w +10 /LucidaTypewriter f +(a) 2628 3804 w +10 /LucidaSansUnicode00 f +(\)) 2700 3804 w +10 /LucidaTypewriter f +(SET) 1152 3924 w +(b) 1512 3924 w +(SET) 2592 3924 w +(b) 2952 3924 w +10 /LucidaSansUnicode00 f +(Experiments) 720 4140 w +(have) 1360 4140 w +(shown) 1622 4140 w +(that) 1972 4140 w +(it) 2200 4140 w +(is) 2303 4140 w +(marginally) 2420 4140 w +(worthwhile) 2964 4140 w +(to) 3532 4140 w +(rename) 3667 4140 w +(uses) 4067 4140 w +(of) 4325 4140 w +(the) 4461 4140 w +(destina\255) 4654 4140 w +(tion variable with uses of the source variable up to the first use of the source variable.) 720 4260 w +(The) 720 4416 w +(second) 941 4416 w +(transform) 1325 4416 w +(will) 1843 4416 w +(do) 2047 4416 w +(relabeling) 2211 4416 w +(without) 2733 4416 w +(deleting) 3138 4416 w +(instructions.) 3572 4416 w +(When) 4249 4416 w +(a) 4555 4416 w 10 /LucidaSansUnicode20 f -(\030\030) 4650 3540 w -10 /LucidaSansUnicode00 f -(move) 4714 3540 w +(\030\030) 4650 4416 w +10 /LucidaSansUnicode00 f +(move) 4714 4416 w 10 /LucidaSansUnicode20 f -(\031\031) 4976 3540 w -10 /LucidaSansUnicode00 f -(instruction) 720 3660 w -(is) 1289 3660 w -(encountered,) 1416 3660 w -(if) 2102 3660 w -(the) 2215 3660 w -(source) 2417 3660 w -(variable) 2786 3660 w -(has) 3213 3660 w -(been) 3427 3660 w -(set) 3710 3660 w -(prior) 3900 3660 w -(to) 4181 3660 w -(the) 4325 3660 w -(use) 4526 3660 w -(of) 4741 3660 w -(the) 4885 3660 w -(destination) 720 3780 w -(variable) 1298 3780 w -(then) 1715 3780 w -(all) 1969 3780 w -(of) 2119 3780 w -(the) 2254 3780 w -(references) 2446 3780 w -(to) 2990 3780 w -(the) 3125 3780 w -(source) 3317 3780 w -(variable) 3676 3780 w -(are) 4093 3780 w -(replaced) 4282 3780 w -(by) 4733 3780 w -(the) 4885 3780 w -(destination) 720 3900 w -(and) 1317 3900 w -(the) 1552 3900 w +(\031\031) 4976 4416 w +10 /LucidaSansUnicode00 f +(instruction) 720 4536 w +(is) 1289 4536 w +(encountered,) 1416 4536 w +(if) 2102 4536 w +(the) 2215 4536 w +(source) 2417 4536 w +(variable) 2786 4536 w +(has) 3213 4536 w +(been) 3427 4536 w +(set) 3710 4536 w +(prior) 3900 4536 w +(to) 4181 4536 w +(the) 4325 4536 w +(use) 4526 4536 w +(of) 4741 4536 w +(the) 4885 4536 w +(destination) 720 4656 w +(variable) 1298 4656 w +(then) 1715 4656 w +(all) 1969 4656 w +(of) 2119 4656 w +(the) 2254 4656 w +(references) 2446 4656 w +(to) 2990 4656 w +(the) 3125 4656 w +(source) 3317 4656 w +(variable) 3676 4656 w +(are) 4093 4656 w +(replaced) 4282 4656 w +(by) 4733 4656 w +(the) 4885 4656 w +(destination) 720 4776 w +(and) 1317 4776 w +(the) 1552 4776 w 10 /LucidaSansUnicode20 f -(\030\030) 1762 3900 w -10 /LucidaSansUnicode00 f -(move) 1826 3900 w +(\030\030) 1762 4776 w +10 /LucidaSansUnicode00 f +(move) 1826 4776 w 10 /LucidaSansUnicode20 f -(\031\031) 2088 3900 w -10 /LucidaSansUnicode00 f -(is) 2207 3900 w -(inverted.) 2342 3900 w -(Typically,) 2857 3900 w -(this) 3366 3900 w -(transformation) 3599 3900 w -(will) 4375 3900 w -(alter) 4593 3900 w -(two) 4865 3900 w +(\031\031) 2088 4776 w +10 /LucidaSansUnicode00 f +(is) 2207 4776 w +(inverted.) 2342 4776 w +(Typically,) 2857 4776 w +(this) 3366 4776 w +(transformation) 3599 4776 w +(will) 4375 4776 w +(alter) 4593 4776 w +(two) 4865 4776 w 10 /LucidaSansUnicode20 f -(\030\030) 720 4020 w -10 /LucidaSansUnicode00 f -(move) 784 4020 w +(\030\030) 720 4896 w +10 /LucidaSansUnicode00 f +(move) 784 4896 w 10 /LucidaSansUnicode20 f -(\031\031) 1046 4020 w -10 /LucidaSansUnicode00 f -(instructions) 1148 4020 w -(and) 1759 4020 w -(allow) 1977 4020 w -(the) 2266 4020 w -(first) 2459 4020 w -(transformation) 2692 4020 w -(another) 3453 4020 w -(chance) 3866 4020 w -(to) 4242 4020 w -(remove) 4379 4020 w -(code.) 4777 4020 w -(This transformation uses the forward data flow set up in the previous pass.) 720 4140 w -(Again,) 720 4296 w -(the) 1066 4296 w -(following) 1258 4296 w -(is) 1742 4296 w -(a) 1859 4296 w -(depiction) 1951 4296 w -(of) 2440 4296 w -(the) 2576 4296 w -(transformation) 2769 4296 w -(where) 3529 4296 w -(the) 3859 4296 w -(pattern) 4052 4296 w -(is) 4441 4296 w -(in) 4559 4296 w -(the) 4688 4296 w -(left) 4881 4296 w -(column and the rewrite is in the right column.) 720 4416 w -10 /LucidaTypewriter f -(SET) 1152 4596 w -(a) 1512 4596 w -(SET) 2592 4596 w -(b) 2952 4596 w -10 /LucidaSansUnicode00 f -(\(sequence with no use of) 1152 4716 w -10 /LucidaTypewriter f -(b) 2397 4716 w -10 /LucidaSansUnicode00 f -(\)) 2469 4716 w -10 /LucidaTypewriter f -(USE) 1152 4836 w -(a) 1512 4836 w -(USE) 2592 4836 w -(b) 2952 4836 w -10 /LucidaSansUnicode00 f -(\(sequence with no use of) 1152 4956 w -10 /LucidaTypewriter f -(b) 2397 4956 w -10 /LucidaSansUnicode00 f -(\)) 2469 4956 w -10 /LucidaTypewriter f -(MOVE a->b) 1152 5076 w -(MOVE b->a) 2592 5076 w -10 /LucidaSansUnicode00 f -(Iterating these transformations will usually get rid of all redundant ) 720 5256 w +(\031\031) 1046 4896 w +10 /LucidaSansUnicode00 f +(instructions) 1148 4896 w +(and) 1759 4896 w +(allow) 1977 4896 w +(the) 2266 4896 w +(first) 2459 4896 w +(transformation) 2692 4896 w +(another) 3453 4896 w +(chance) 3866 4896 w +(to) 4242 4896 w +(remove) 4379 4896 w +(code.) 4777 4896 w +(This transformation uses the forward data flow set up in the previous pass.) 720 5016 w +(Again,) 720 5172 w +(the) 1066 5172 w +(following) 1258 5172 w +(is) 1742 5172 w +(a) 1859 5172 w +(depiction) 1951 5172 w +(of) 2440 5172 w +(the) 2576 5172 w +(transformation) 2769 5172 w +(where) 3529 5172 w +(the) 3859 5172 w +(pattern) 4052 5172 w +(is) 4441 5172 w +(in) 4559 5172 w +(the) 4688 5172 w +(left) 4881 5172 w +(column and the rewrite is in the right column.) 720 5292 w +10 /LucidaTypewriter f +(SET) 1152 5472 w +(a) 1512 5472 w +(SET) 2592 5472 w +(b) 2952 5472 w +10 /LucidaSansUnicode00 f +(\(sequence with no use of) 1152 5592 w +10 /LucidaTypewriter f +(b) 2397 5592 w +10 /LucidaSansUnicode00 f +(\)) 2469 5592 w +10 /LucidaTypewriter f +(USE) 1152 5712 w +(a) 1512 5712 w +(USE) 2592 5712 w +(b) 2952 5712 w +10 /LucidaSansUnicode00 f +(\(sequence with no use of) 1152 5832 w +10 /LucidaTypewriter f +(b) 2397 5832 w +10 /LucidaSansUnicode00 f +(\)) 2469 5832 w +10 /LucidaTypewriter f +(MOVE a->b) 1152 5952 w +(MOVE b->a) 2592 5952 w +10 /LucidaSansUnicode00 f +(Iterating these transformations will usually get rid of all redundant ) 720 6132 w 10 /LucidaSansUnicode20 f -(\030\030) 3987 5256 w -10 /LucidaSansUnicode00 f -(move) 4051 5256 w +(\030\030) 3987 6132 w +10 /LucidaSansUnicode00 f +(move) 4051 6132 w 10 /LucidaSansUnicode20 f -(\031\031) 4313 5256 w -10 /LucidaSansUnicode00 f -(instructions.) 4409 5256 w -(A) 720 5412 w -(problem) 838 5412 w -(with) 1293 5412 w -(this) 1547 5412 w -(organization) 1775 5412 w -(is) 2435 5412 w -(that) 2564 5412 w -(the) 2804 5412 w -(costs) 3008 5412 w -(of) 3308 5412 w -(registerization) 3455 5412 w -(calculated) 4207 5412 w -(in) 4744 5412 w -(the) 4885 5412 w -(previous) 720 5532 w -(pass) 1186 5532 w -(must) 1457 5532 w -(depend) 1751 5532 w -(on) 2165 5532 w -(how) 2339 5532 w -(well) 2590 5532 w -(this) 2832 5532 w -(pass) 3062 5532 w -(can) 3332 5532 w -(detect) 3550 5532 w -(and) 3900 5532 w -(remove) 4130 5532 w -(redundant) 4539 5532 w -(instructions.) 720 5652 w -(Often,) 1399 5652 w -(a) 1743 5652 w -(fine) 1840 5652 w -(candidate) 2066 5652 w -(for) 2580 5652 w -(registerization) 2762 5652 w -(is) 3508 5652 w -(rejected) 3631 5652 w -(because) 4064 5652 w -(of) 4501 5652 w -(the) 4642 5652 w -(cost) 4840 5652 w -(of instructions that are later removed.) 720 5772 w -10 /LucidaSans-Demi f -(5.9.) 720 6012 w -(Writing the object file) 962 6012 w -10 /LucidaSansUnicode00 f -(The) 720 6168 w -(last) 957 6168 w -(pass) 1185 6168 w -(walks) 1461 6168 w -(the) 1788 6168 w -(internal) 2000 6168 w -(assembly) 2428 6168 w -(language) 2935 6168 w -(and) 3435 6168 w -(writes) 3672 6168 w -(the) 4020 6168 w -(object) 4232 6168 w -(file.) 4587 6168 w -(The) 4859 6168 w -(object) 720 6288 w -(file) 1062 6288 w -(is) 1257 6288 w -(reduced) 1381 6288 w -(in) 1817 6288 w -(size) 1952 6288 w -(by) 2189 6288 w -(about) 2347 6288 w -(a) 2668 6288 w -(factor) 2766 6288 w -(of) 3091 6288 w -(three) 3232 6288 w -(with) 3527 6288 w -(simple) 3775 6288 w -(compression) 4139 6288 w -(tech\255) 4801 6288 w -(niques.) 720 6408 w -(The) 1144 6408 w -(most) 1363 6408 w -(important) 1643 6408 w -(aspect) 2159 6408 w -(of) 2510 6408 w -(the) 2646 6408 w -(object) 2839 6408 w -(file) 3175 6408 w -(format) 3364 6408 w -(is) 3726 6408 w -(that) 3844 6408 w -(it) 4073 6408 w -(is) 4177 6408 w -(independent) 4295 6408 w -(of) 4942 6408 w -(the) 720 6528 w -(compiling) 924 6528 w -(machine.) 1452 6528 w -(All) 1973 6528 w -(integer) 2149 6528 w -(and) 2541 6528 w -(floating) 2770 6528 w -(numbers) 3190 6528 w -(in) 3666 6528 w -(the) 3805 6528 w -(object) 4008 6528 w -(code) 4354 6528 w -(are) 4633 6528 w -(con\255) 4833 6528 w -(verted to known formats and byte orders.) 720 6648 w +(\031\031) 4313 6132 w +10 /LucidaSansUnicode00 f +(instructions.) 4409 6132 w +(A) 720 6288 w +(problem) 838 6288 w +(with) 1293 6288 w +(this) 1547 6288 w +(organization) 1775 6288 w +(is) 2435 6288 w +(that) 2564 6288 w +(the) 2804 6288 w +(costs) 3008 6288 w +(of) 3308 6288 w +(registerization) 3455 6288 w +(calculated) 4207 6288 w +(in) 4744 6288 w +(the) 4885 6288 w +(previous) 720 6408 w +(pass) 1186 6408 w +(must) 1457 6408 w +(depend) 1751 6408 w +(on) 2165 6408 w +(how) 2339 6408 w +(well) 2590 6408 w +(this) 2832 6408 w +(pass) 3062 6408 w +(can) 3332 6408 w +(detect) 3550 6408 w +(and) 3900 6408 w +(remove) 4130 6408 w +(redundant) 4539 6408 w +(instructions.) 720 6528 w +(Often,) 1399 6528 w +(a) 1743 6528 w +(fine) 1840 6528 w +(candidate) 2066 6528 w +(for) 2580 6528 w +(registerization) 2762 6528 w +(is) 3508 6528 w +(rejected) 3631 6528 w +(because) 4064 6528 w +(of) 4501 6528 w +(the) 4642 6528 w +(cost) 4840 6528 w +(of instructions that are later removed.) 720 6648 w cleartomark showpage saveobj restore @@ -7146,470 +7114,504 @@ 10 /LucidaSansUnicode00 f (\255 9 \255) 2783 480 w 10 /LucidaSans-Demi f -(6.) 720 840 w -(The loader) 873 840 w +(5.9.) 720 840 w +(Writing the object file) 962 840 w 10 /LucidaSansUnicode00 f (The) 720 996 w -(loader) 937 996 w -(is) 1278 996 w -(a) 1394 996 w -(multiple) 1485 996 w -(pass) 1919 996 w -(program) 2175 996 w -(that) 2627 996 w -(reads) 2854 996 w -(object) 3156 996 w -(files) 3490 996 w -(and) 3728 996 w -(libraries) 3944 996 w -(and) 4375 996 w -(produces) 4592 996 w -(an) 720 1116 w -(executable) 899 1116 w -(binary.) 1486 1116 w -(The) 1913 1116 w -(loader) 2155 1116 w -(also) 2521 1116 w -(does) 2778 1116 w -(some) 3070 1116 w -(minimal) 3392 1116 w -(optimizations) 3843 1116 w -(and) 4568 1116 w -(code) 4809 1116 w -(rewriting.) 720 1236 w -(Many of the operations performed by the loader are machine-dependent.) 1250 1236 w -(The) 720 1392 w -(first) 935 1392 w -(pass) 1164 1392 w -(of) 1418 1392 w -(the) 1550 1392 w -(loader) 1739 1392 w -(reads) 2078 1392 w -(the) 2378 1392 w -(object) 2567 1392 w -(modules) 2899 1392 w -(into) 3349 1392 w -(an) 3573 1392 w -(internal) 3725 1392 w -(data) 4131 1392 w -(structure) 4376 1392 w -(that) 4849 1392 w -(looks) 720 1512 w -(like) 1019 1512 w -(binary) 1229 1512 w -(assembly) 1569 1512 w -(language.) 2057 1512 w -(As) 2602 1512 w -(the) 2760 1512 w -(instructions) 2953 1512 w -(are) 3564 1512 w -(read,) 3754 1512 w -(code) 4039 1512 w -(is) 4308 1512 w -(reordered) 4426 1512 w -(to) 4942 1512 w -(remove) 720 1632 w -(unconditional) 1118 1632 w -(branch) 1820 1632 w -(instructions.) 2193 1632 w -(Conditional) 2869 1632 w -(branch) 3465 1632 w -(instructions) 3839 1632 w -(are) 4452 1632 w -(inverted) 4644 1632 w -(to) 720 1752 w -(prevent) 855 1752 w -(the) 1259 1752 w -(insertion) 1451 1752 w -(of) 1916 1752 w -(unconditional) 2051 1752 w -(branches.) 2751 1752 w -(The) 3293 1752 w -(loader) 3511 1752 w -(will) 3853 1752 w -(also) 4054 1752 w -(make) 4287 1752 w -(a) 4586 1752 w -(copy) 4678 1752 w -(of) 4942 1752 w -(a few instructions to remove an unconditional branch.) 720 1872 w -(The) 720 2028 w -(next) 952 2028 w -(pass) 1219 2028 w -(allocates) 1490 2028 w -(addresses) 1965 2028 w -(for) 2503 2028 w -(all) 2693 2028 w -(external) 2857 2028 w -(data.) 3305 2028 w -(Typical) 3630 2028 w -(of) 4024 2028 w -(processors) 4174 2028 w -(is) 4753 2028 w -(the) 4885 2028 w -(MIPS,) 720 2148 w -(which) 1012 2148 w -(can) 1329 2148 w -(reference) 1533 2148 w -(\26132K) 2025 2148 w -(bytes) 2332 2148 w -(from) 2627 2148 w -(a) 2895 2148 w -(register.) 2986 2148 w -(The) 3459 2148 w -(loader) 3676 2148 w -(allocates) 4017 2148 w -(the) 4477 2148 w -(register) 4667 2148 w -10 /LucidaTypewriter f -(R30) 720 2268 w -10 /LucidaSansUnicode00 f -(as) 969 2268 w -(the) 1108 2268 w -(static) 1296 2268 w -(pointer.) 1589 2268 w -(The) 2035 2268 w -(value) 2249 2268 w -(placed) 2536 2268 w -(in) 2886 2268 w -10 /LucidaTypewriter f -(R30) 3010 2268 w -10 /LucidaSansUnicode00 f -(is) 3259 2268 w -(the) 3372 2268 w -(base) 3560 2268 w -(of) 3819 2268 w -(the) 3951 2268 w -(data) 4140 2268 w -(segment) 4384 2268 w -(plus) 4835 2268 w -(32K.) 720 2388 w -(It) 1009 2388 w -(is) 1109 2388 w -(then) 1223 2388 w -(cheap) 1474 2388 w -(to) 1795 2388 w -(reference) 1927 2388 w -(all) 2416 2388 w -(data) 2562 2388 w -(in) 2805 2388 w -(the) 2929 2388 w -(first) 3117 2388 w -(64K) 3345 2388 w -(of) 3569 2388 w -(the) 3700 2388 w -(data) 3888 2388 w -(segment.) 4131 2388 w -(External) 4645 2388 w -(variables) 720 2508 w -(are) 1187 2508 w -(allocated) 1375 2508 w -(to) 1847 2508 w -(the) 1981 2508 w -(data) 2172 2508 w -(segment) 2418 2508 w -(with) 2871 2508 w -(the) 3112 2508 w -(smallest) 3303 2508 w -(variables) 3740 2508 w -(allocated) 4207 2508 w -(first.) 4679 2508 w -(If) 4974 2508 w -(all) 720 2628 w -(of) 872 2628 w -(the) 1008 2628 w -(data) 1201 2628 w -(cannot) 1449 2628 w -(fit) 1815 2628 w -(into) 1956 2628 w -(the) 2183 2628 w -(first) 2376 2628 w -(64K) 2609 2628 w -(of) 2838 2628 w -(the) 2974 2628 w -(data) 3167 2628 w -(segment,) 3415 2628 w -(then) 3902 2628 w -(usually) 4157 2628 w -(only) 4535 2628 w -(a) 4777 2628 w -(few) 4870 2628 w -(large arrays need more expensive addressing modes.) 720 2748 w -(For) 720 2904 w -(the) 916 2904 w -(MIPS) 1111 2904 w -(processor,) 1375 2904 w -(the) 1924 2904 w -(loader) 2120 2904 w -(makes) 2466 2904 w -(a) 2820 2904 w -(pass) 2916 2904 w -(over) 3177 2904 w -(the) 3428 2904 w -(internal) 3624 2904 w -(structures,) 4036 2904 w -(exchang\255) 4598 2904 w -(ing) 720 3024 w -(instructions) 913 3024 w -(to) 1526 3024 w -(try) 1664 3024 w -(to) 1833 3024 w -(fill) 1970 3024 w +(last) 957 996 w +(pass) 1185 996 w +(walks) 1461 996 w +(the) 1788 996 w +(internal) 2000 996 w +(assembly) 2428 996 w +(language) 2935 996 w +(and) 3435 996 w +(writes) 3672 996 w +(the) 4020 996 w +(object) 4232 996 w +(file.) 4587 996 w +(The) 4859 996 w +(object) 720 1116 w +(file) 1062 1116 w +(is) 1257 1116 w +(reduced) 1381 1116 w +(in) 1817 1116 w +(size) 1952 1116 w +(by) 2189 1116 w +(about) 2347 1116 w +(a) 2668 1116 w +(factor) 2766 1116 w +(of) 3091 1116 w +(three) 3232 1116 w +(with) 3527 1116 w +(simple) 3775 1116 w +(compression) 4139 1116 w +(tech\255) 4801 1116 w +(niques.) 720 1236 w +(The) 1144 1236 w +(most) 1363 1236 w +(important) 1643 1236 w +(aspect) 2159 1236 w +(of) 2510 1236 w +(the) 2646 1236 w +(object) 2839 1236 w +(file) 3175 1236 w +(format) 3364 1236 w +(is) 3726 1236 w +(that) 3844 1236 w +(it) 4073 1236 w +(is) 4177 1236 w +(independent) 4295 1236 w +(of) 4942 1236 w +(the) 720 1356 w +(compiling) 924 1356 w +(machine.) 1452 1356 w +(All) 1973 1356 w +(integer) 2149 1356 w +(and) 2541 1356 w +(floating) 2770 1356 w +(numbers) 3190 1356 w +(in) 3666 1356 w +(the) 3805 1356 w +(object) 4008 1356 w +(code) 4354 1356 w +(are) 4633 1356 w +(con\255) 4833 1356 w +(verted to known formats and byte orders.) 720 1476 w +10 /LucidaSans-Demi f +(6.) 720 1716 w +(The loader) 873 1716 w +10 /LucidaSansUnicode00 f +(The) 720 1872 w +(loader) 937 1872 w +(is) 1278 1872 w +(a) 1394 1872 w +(multiple) 1485 1872 w +(pass) 1919 1872 w +(program) 2175 1872 w +(that) 2627 1872 w +(reads) 2854 1872 w +(object) 3156 1872 w +(files) 3490 1872 w +(and) 3728 1872 w +(libraries) 3944 1872 w +(and) 4375 1872 w +(produces) 4592 1872 w +(an) 720 1992 w +(executable) 899 1992 w +(binary.) 1486 1992 w +(The) 1913 1992 w +(loader) 2155 1992 w +(also) 2521 1992 w +(does) 2778 1992 w +(some) 3070 1992 w +(minimal) 3392 1992 w +(optimizations) 3843 1992 w +(and) 4568 1992 w +(code) 4809 1992 w +(rewriting.) 720 2112 w +(Many of the operations performed by the loader are machine-dependent.) 1250 2112 w +(The) 720 2268 w +(first) 935 2268 w +(pass) 1164 2268 w +(of) 1418 2268 w +(the) 1550 2268 w +(loader) 1739 2268 w +(reads) 2078 2268 w +(the) 2378 2268 w +(object) 2567 2268 w +(modules) 2899 2268 w +(into) 3349 2268 w +(an) 3573 2268 w +(internal) 3725 2268 w +(data) 4131 2268 w +(structure) 4376 2268 w +(that) 4849 2268 w +(looks) 720 2388 w +(like) 1019 2388 w +(binary) 1229 2388 w +(assembly) 1569 2388 w +(language.) 2057 2388 w +(As) 2602 2388 w +(the) 2760 2388 w +(instructions) 2953 2388 w +(are) 3564 2388 w +(read,) 3754 2388 w +(code) 4039 2388 w +(is) 4308 2388 w +(reordered) 4426 2388 w +(to) 4942 2388 w +(remove) 720 2508 w +(unconditional) 1118 2508 w +(branch) 1820 2508 w +(instructions.) 2193 2508 w +(Conditional) 2869 2508 w +(branch) 3465 2508 w +(instructions) 3839 2508 w +(are) 4452 2508 w +(inverted) 4644 2508 w +(to) 720 2628 w +(prevent) 855 2628 w +(the) 1259 2628 w +(insertion) 1451 2628 w +(of) 1916 2628 w +(unconditional) 2051 2628 w +(branches.) 2751 2628 w +(The) 3293 2628 w +(loader) 3511 2628 w +(will) 3853 2628 w +(also) 4054 2628 w +(make) 4287 2628 w +(a) 4586 2628 w +(copy) 4678 2628 w +(of) 4942 2628 w +(a few instructions to remove an unconditional branch.) 720 2748 w +(The) 720 2904 w +(next) 952 2904 w +(pass) 1219 2904 w +(allocates) 1490 2904 w +(addresses) 1965 2904 w +(for) 2503 2904 w +(all) 2693 2904 w +(external) 2857 2904 w +(data.) 3305 2904 w +(Typical) 3630 2904 w +(of) 4024 2904 w +(processors) 4174 2904 w +(is) 4753 2904 w +(the) 4885 2904 w +(MIPS,) 720 3024 w +(which) 1012 3024 w +(can) 1329 3024 w +(reference) 1533 3024 w +(\26132K) 2025 3024 w +(bytes) 2332 3024 w +(from) 2627 3024 w +(a) 2895 3024 w +(register.) 2986 3024 w +(The) 3459 3024 w +(loader) 3676 3024 w +(allocates) 4017 3024 w +(the) 4477 3024 w +(register) 4667 3024 w +10 /LucidaTypewriter f +(R30) 720 3144 w +10 /LucidaSansUnicode00 f +(as) 969 3144 w +(the) 1108 3144 w +(static) 1296 3144 w +(pointer.) 1589 3144 w +(The) 2035 3144 w +(value) 2249 3144 w +(placed) 2536 3144 w +(in) 2886 3144 w +10 /LucidaTypewriter f +(R30) 3010 3144 w +10 /LucidaSansUnicode00 f +(is) 3259 3144 w +(the) 3372 3144 w +(base) 3560 3144 w +(of) 3819 3144 w +(the) 3951 3144 w +(data) 4140 3144 w +(segment) 4384 3144 w +(plus) 4835 3144 w +(32K.) 720 3264 w +(It) 1009 3264 w +(is) 1109 3264 w +(then) 1223 3264 w +(cheap) 1474 3264 w +(to) 1795 3264 w +(reference) 1927 3264 w +(all) 2416 3264 w +(data) 2562 3264 w +(in) 2805 3264 w +(the) 2929 3264 w +(first) 3117 3264 w +(64K) 3345 3264 w +(of) 3569 3264 w +(the) 3700 3264 w +(data) 3888 3264 w +(segment.) 4131 3264 w +(External) 4645 3264 w +(variables) 720 3384 w +(are) 1187 3384 w +(allocated) 1375 3384 w +(to) 1847 3384 w +(the) 1981 3384 w +(data) 2172 3384 w +(segment) 2418 3384 w +(with) 2871 3384 w +(the) 3112 3384 w +(smallest) 3303 3384 w +(variables) 3740 3384 w +(allocated) 4207 3384 w +(first.) 4679 3384 w +(If) 4974 3384 w +(all) 720 3504 w +(of) 872 3504 w +(the) 1008 3504 w +(data) 1201 3504 w +(cannot) 1449 3504 w +(fit) 1815 3504 w +(into) 1956 3504 w +(the) 2183 3504 w +(first) 2376 3504 w +(64K) 2609 3504 w +(of) 2838 3504 w +(the) 2974 3504 w +(data) 3167 3504 w +(segment,) 3415 3504 w +(then) 3902 3504 w +(usually) 4157 3504 w +(only) 4535 3504 w +(a) 4777 3504 w +(few) 4870 3504 w +(large arrays need more expensive addressing modes.) 720 3624 w +(For) 720 3780 w +(the) 916 3780 w +(MIPS) 1111 3780 w +(processor,) 1375 3780 w +(the) 1924 3780 w +(loader) 2120 3780 w +(makes) 2466 3780 w +(a) 2820 3780 w +(pass) 2916 3780 w +(over) 3177 3780 w +(the) 3428 3780 w +(internal) 3624 3780 w +(structures,) 4036 3780 w +(exchang\255) 4598 3780 w +(ing) 720 3900 w +(instructions) 913 3900 w +(to) 1526 3900 w +(try) 1664 3900 w +(to) 1833 3900 w +(fill) 1970 3900 w 10 /LucidaSansUnicode20 f -(\030\030) 2133 3024 w -10 /LucidaSansUnicode00 f -(delay) 2197 3024 w -(slots) 2491 3024 w +(\030\030) 2133 3900 w +10 /LucidaSansUnicode00 f +(delay) 2197 3900 w +(slots) 2491 3900 w 10 /LucidaSansUnicode20 f -(\031\031) 2720 3024 w -10 /LucidaSansUnicode00 f -(with) 2823 3024 w -(useful) 3067 3024 w -(work.) 3403 3024 w -(If) 3743 3024 w -(a) 3848 3024 w -(useful) 3942 3024 w -(instruction) 4278 3024 w -(can\255) 4839 3024 w -(not) 720 3144 w -(be) 917 3144 w -(found) 1073 3144 w -(to) 1395 3144 w -(fill) 1530 3144 w -(a) 1691 3144 w -(delay) 1783 3144 w -(slot,) 2075 3144 w -(the) 2322 3144 w -(loader) 2514 3144 w -(will) 2856 3144 w -(insert) 3057 3144 w +(\031\031) 2720 3900 w +10 /LucidaSansUnicode00 f +(with) 2823 3900 w +(useful) 3067 3900 w +(work.) 3403 3900 w +(If) 3743 3900 w +(a) 3848 3900 w +(useful) 3942 3900 w +(instruction) 4278 3900 w +(can\255) 4839 3900 w +(not) 720 4020 w +(be) 917 4020 w +(found) 1073 4020 w +(to) 1395 4020 w +(fill) 1530 4020 w +(a) 1691 4020 w +(delay) 1783 4020 w +(slot,) 2075 4020 w +(the) 2322 4020 w +(loader) 2514 4020 w +(will) 2856 4020 w +(insert) 3057 4020 w 10 /LucidaSansUnicode20 f -(\030\030) 3371 3144 w -10 /LucidaSansUnicode00 f -(noop) 3435 3144 w +(\030\030) 3371 4020 w +10 /LucidaSansUnicode00 f +(noop) 3435 4020 w 10 /LucidaSansUnicode20 f -(\031\031) 3682 3144 w -10 /LucidaSansUnicode00 f -(instructions.) 3784 3144 w -(This) 4459 3144 w -(pass) 4702 3144 w -(is) 4960 3144 w -(very) 720 3264 w -(expensive) 962 3264 w -(and) 1489 3264 w -(does) 1710 3264 w -(not) 1982 3264 w -(do) 2183 3264 w -(a) 2348 3264 w -(good) 2444 3264 w -(job.) 2732 3264 w -(About) 2991 3264 w -(40%) 3324 3264 w -(of) 3558 3264 w -(all) 3696 3264 w -(instructions) 3849 3264 w -(are) 4462 3264 w -(in) 4654 3264 w -(delay) 4785 3264 w -(slots.) 720 3384 w -(About) 1056 3384 w -(65%) 1392 3384 w -(of) 1629 3384 w -(these) 1771 3384 w -(are) 2077 3384 w -(useful) 2273 3384 w -(instructions) 2614 3384 w -(and) 3231 3384 w -(35%) 3455 3384 w -(are) 3692 3384 w +(\031\031) 3682 4020 w +10 /LucidaSansUnicode00 f +(instructions.) 3784 4020 w +(This) 4459 4020 w +(pass) 4702 4020 w +(is) 4960 4020 w +(very) 720 4140 w +(expensive) 962 4140 w +(and) 1489 4140 w +(does) 1710 4140 w +(not) 1982 4140 w +(do) 2183 4140 w +(a) 2348 4140 w +(good) 2444 4140 w +(job.) 2732 4140 w +(About) 2991 4140 w +(40%) 3324 4140 w +(of) 3558 4140 w +(all) 3696 4140 w +(instructions) 3849 4140 w +(are) 4462 4140 w +(in) 4654 4140 w +(delay) 4785 4140 w +(slots.) 720 4260 w +(About) 1056 4260 w +(65%) 1392 4260 w +(of) 1629 4260 w +(these) 1771 4260 w +(are) 2077 4260 w +(useful) 2273 4260 w +(instructions) 2614 4260 w +(and) 3231 4260 w +(35%) 3455 4260 w +(are) 3692 4260 w 10 /LucidaSansUnicode20 f -(\030\030) 3888 3384 w -10 /LucidaSansUnicode00 f -(noops.) 3952 3384 w +(\030\030) 3888 4260 w +10 /LucidaSansUnicode00 f +(noops.) 3952 4260 w 10 /LucidaSansUnicode20 f -(\031\031) 4282 3384 w -10 /LucidaSansUnicode00 f -(The) 4422 3384 w -(vendor-) 4647 3384 w -(supplied) 720 3504 w -(assembler) 1181 3504 w -(does) 1721 3504 w -(this) 1997 3504 w -(job) 2221 3504 w -(more) 2420 3504 w -(effectively,) 2716 3504 w -(filling) 3285 3504 w -(about) 3607 3504 w -(80%) 3930 3504 w -(of) 4168 3504 w -(the) 4311 3504 w -(delay) 4511 3504 w -(slots) 4811 3504 w -(with useful instructions.) 720 3624 w -(On) 720 3780 w -(the) 905 3780 w -(68020) 1105 3780 w -(processor,) 1465 3780 w -(branch) 2018 3780 w -(instructions) 2397 3780 w -(come) 3015 3780 w -(in) 3321 3780 w -(a) 3457 3780 w -(variety) 3557 3780 w -(of) 3924 3780 w -(sizes) 4067 3780 w -(depending) 4356 3780 w -(on) 4917 3780 w -(the) 720 3900 w -(relative) 908 3900 w -(distance) 1296 3900 w -(of) 1733 3900 w -(the) 1864 3900 w -(branch.) 2052 3900 w -(Thus) 2483 3900 w -(the) 2754 3900 w -(size) 2942 3900 w -(of) 3168 3900 w -(branch instructions can be mutually) 3299 3900 w -(dependent.) 720 4020 w -(The) 1351 4020 w -(loader) 1581 4020 w -(uses) 1936 4020 w -(a) 2206 4020 w -(multiple) 2311 4020 w -(pass) 2759 4020 w -(algorithm) 3029 4020 w -(to) 3548 4020 w -(resolve) 3696 4020 w -(the) 4092 4020 w -(branch) 4297 4020 w -(lengths) 4681 4020 w -([Szy78].) 720 4140 w -(Initially,) 1179 4140 w -(all) 1602 4140 w -(branches) 1755 4140 w -(are) 2236 4140 w -(assumed) 2428 4140 w -(minimal) 2899 4140 w -(length.) 3329 4140 w -(On) 3741 4140 w -(each) 3921 4140 w -(subsequent) 4185 4140 w -(pass,) 4788 4140 w -(the) 720 4260 w -(branches) 928 4260 w -(are) 1422 4260 w -(reassessed) 1627 4260 w -(and) 2211 4260 w -(expanded) 2444 4260 w -(if) 2976 4260 w -(necessary.) 3095 4260 w -(When) 3687 4260 w -(no) 4007 4260 w -(more) 4184 4260 w -(expansions) 4489 4260 w -(occur, the locations of the instructions in the text segment are known.) 720 4380 w -(On) 720 4536 w -(the) 895 4536 w -(MIPS) 1086 4536 w -(processor,) 1346 4536 w -(all) 1890 4536 w -(instructions) 2039 4536 w -(are) 2648 4536 w -(one) 2836 4536 w -(size.) 3051 4536 w -(A) 3344 4536 w -(single) 3449 4536 w -(pass) 3774 4536 w -(over) 4030 4536 w -(the) 4276 4536 w -(instructions) 4467 4536 w -(will determine the locations of all addresses in the text segment.) 720 4656 w -(The) 720 4812 w -(last) 943 4812 w -(pass) 1157 4812 w -(of) 1419 4812 w -(the) 1560 4812 w -(loader) 1758 4812 w -(produces) 2106 4812 w -(the) 2597 4812 w -(executable) 2795 4812 w -(binary.) 3364 4812 w -(A) 3773 4812 w -(symbol) 3885 4812 w -(table) 4277 4812 w -(and) 4560 4812 w -(other) 4783 4812 w -(tables are produced to help the debugger to interpret the binary symbolically.) 720 4932 w -(The) 720 5088 w -(loader) 952 5088 w -(places) 1308 5088 w -(absolute) 1664 5088 w -(source) 2129 5088 w -(line) 2502 5088 w -(numbers) 2729 5088 w -(in) 3208 5088 w -(the) 3350 5088 w -(symbol) 3556 5088 w -(table.) 3956 5088 w -(The) 4311 5088 w -(name) 4543 5088 w -(and) 4860 5088 w -(absolute) 720 5208 w -(line) 1177 5208 w -(number) 1396 5208 w -(of) 1816 5208 w -(all) 1956 5208 w -10 /LucidaTypewriter f -(#include) 2111 5208 w -10 /LucidaSansUnicode00 f -(files) 2729 5208 w -(is) 2973 5208 w -(also) 3095 5208 w -(placed) 3333 5208 w -(in) 3692 5208 w -(the) 3825 5208 w -(symbol) 4022 5208 w -(table) 4413 5208 w -(so) 4695 5208 w -(that) 4849 5208 w -(the debuggers can associate object code to source files.) 720 5328 w +(\031\031) 4282 4260 w +10 /LucidaSansUnicode00 f +(The) 4422 4260 w +(vendor-) 4647 4260 w +(supplied) 720 4380 w +(assembler) 1181 4380 w +(does) 1721 4380 w +(this) 1997 4380 w +(job) 2221 4380 w +(more) 2420 4380 w +(effectively,) 2716 4380 w +(filling) 3285 4380 w +(about) 3607 4380 w +(80%) 3930 4380 w +(of) 4168 4380 w +(the) 4311 4380 w +(delay) 4511 4380 w +(slots) 4811 4380 w +(with useful instructions.) 720 4500 w +(On) 720 4656 w +(the) 905 4656 w +(68020) 1105 4656 w +(processor,) 1465 4656 w +(branch) 2018 4656 w +(instructions) 2397 4656 w +(come) 3015 4656 w +(in) 3321 4656 w +(a) 3457 4656 w +(variety) 3557 4656 w +(of) 3924 4656 w +(sizes) 4067 4656 w +(depending) 4356 4656 w +(on) 4917 4656 w +(the) 720 4776 w +(relative) 908 4776 w +(distance) 1296 4776 w +(of) 1733 4776 w +(the) 1864 4776 w +(branch.) 2052 4776 w +(Thus) 2483 4776 w +(the) 2754 4776 w +(size) 2942 4776 w +(of) 3168 4776 w +(branch instructions can be mutually) 3299 4776 w +(dependent.) 720 4896 w +(The) 1351 4896 w +(loader) 1581 4896 w +(uses) 1936 4896 w +(a) 2206 4896 w +(multiple) 2311 4896 w +(pass) 2759 4896 w +(algorithm) 3029 4896 w +(to) 3548 4896 w +(resolve) 3696 4896 w +(the) 4092 4896 w +(branch) 4297 4896 w +(lengths) 4681 4896 w +([Szy78].) 720 5016 w +(Initially,) 1179 5016 w +(all) 1602 5016 w +(branches) 1755 5016 w +(are) 2236 5016 w +(assumed) 2428 5016 w +(minimal) 2899 5016 w +(length.) 3329 5016 w +(On) 3741 5016 w +(each) 3921 5016 w +(subsequent) 4185 5016 w +(pass,) 4788 5016 w +(the) 720 5136 w +(branches) 928 5136 w +(are) 1422 5136 w +(reassessed) 1627 5136 w +(and) 2211 5136 w +(expanded) 2444 5136 w +(if) 2976 5136 w +(necessary.) 3095 5136 w +(When) 3687 5136 w +(no) 4007 5136 w +(more) 4184 5136 w +(expansions) 4489 5136 w +(occur, the locations of the instructions in the text segment are known.) 720 5256 w +(On) 720 5412 w +(the) 895 5412 w +(MIPS) 1086 5412 w +(processor,) 1346 5412 w +(all) 1890 5412 w +(instructions) 2039 5412 w +(are) 2648 5412 w +(one) 2836 5412 w +(size.) 3051 5412 w +(A) 3344 5412 w +(single) 3449 5412 w +(pass) 3774 5412 w +(over) 4030 5412 w +(the) 4276 5412 w +(instructions) 4467 5412 w +(will determine the locations of all addresses in the text segment.) 720 5532 w +(The) 720 5688 w +(last) 943 5688 w +(pass) 1157 5688 w +(of) 1419 5688 w +(the) 1560 5688 w +(loader) 1758 5688 w +(produces) 2106 5688 w +(the) 2597 5688 w +(executable) 2795 5688 w +(binary.) 3364 5688 w +(A) 3773 5688 w +(symbol) 3885 5688 w +(table) 4277 5688 w +(and) 4560 5688 w +(other) 4783 5688 w +(tables are produced to help the debugger to interpret the binary symbolically.) 720 5808 w +(The) 720 5964 w +(loader) 952 5964 w +(places) 1308 5964 w +(absolute) 1664 5964 w +(source) 2129 5964 w +(line) 2502 5964 w +(numbers) 2729 5964 w +(in) 3208 5964 w +(the) 3350 5964 w +(symbol) 3556 5964 w +(table.) 3956 5964 w +(The) 4311 5964 w +(name) 4543 5964 w +(and) 4860 5964 w +(absolute) 720 6084 w +(line) 1177 6084 w +(number) 1396 6084 w +(of) 1816 6084 w +(all) 1956 6084 w +10 /LucidaTypewriter f +(#include) 2111 6084 w +10 /LucidaSansUnicode00 f +(files) 2729 6084 w +(is) 2973 6084 w +(also) 3095 6084 w +(placed) 3333 6084 w +(in) 3692 6084 w +(the) 3825 6084 w +(symbol) 4022 6084 w +(table) 4413 6084 w +(so) 4695 6084 w +(that) 4849 6084 w +(the debuggers can associate object code to source files.) 720 6204 w 10 /LucidaSans-Demi f -(7.) 720 5568 w -(Performance) 873 5568 w -10 /LucidaSansUnicode00 f -(The following is a table of the source size of the MIPS compiler.) 720 5724 w -(lines) 1152 5904 w -(module) 1512 5904 w -(509) 1215 6024 w -(machine-independent headers) 1512 6024 w -(1070) 1152 6144 w -(machine-independent YACC source) 1512 6144 w -(6090) 1152 6264 w -(machine-independent C source) 1512 6264 w -(545) 1215 6504 w -(machine-dependent headers) 1512 6504 w -(6532) 1152 6624 w -(machine-dependent C source) 1512 6624 w -(298) 1215 6864 w -(loader headers) 1512 6864 w -(5215) 1152 6984 w -(loader C source) 1512 6984 w -(The) 720 7200 w -(following) 946 7200 w -(table) 1438 7200 w -(shows) 1723 7200 w -(timing) 2070 7200 w -(of) 2427 7200 w -(a) 2570 7200 w -(test) 2670 7200 w -(program) 2896 7200 w -(that) 3357 7200 w -(plays) 3593 7200 w -(checkers,) 3888 7200 w -(running) 4391 7200 w -(on) 4816 7200 w -(a) 4985 7200 w +(7.) 720 6444 w +(Performance) 873 6444 w +10 /LucidaSansUnicode00 f +(The following is a table of the source size of the MIPS compiler.) 720 6600 w cleartomark showpage saveobj restore @@ -7620,452 +7622,397 @@ 10 pagesetup 10 /LucidaSansUnicode00 f (\255 10 \255) 2752 480 w -(MIPS) 720 840 w -(R4000.) 979 840 w -(The) 1393 840 w -(test) 1609 840 w -(program) 1825 840 w -(is) 2276 840 w -(26) 2390 840 w -(files) 2550 840 w -(totaling) 2786 840 w -(12600) 3192 840 w -(lines) 3541 840 w -(of) 3802 840 w -(C.) 3934 840 w -(The) 4101 840 w -(execution) 4316 840 w -(time) 4825 840 w -(does) 720 960 w -(not) 992 960 w -(significantly) 1193 960 w -(depend) 1819 960 w -(on) 2223 960 w -(library) 2387 960 w -(implementation.) 2738 960 w -(Since) 3605 960 w -(no) 3898 960 w -(other) 4062 960 w -(compiler) 4360 960 w -(runs) 4824 960 w -(on) 720 1080 w -(Plan) 883 1080 w -(9,) 1124 1080 w -(the) 1259 1080 w -(Plan) 1454 1080 w -(9) 1695 1080 w -(tests) 1798 1080 w -(were) 2070 1080 w -(done) 2340 1080 w -(with) 2622 1080 w -(the) 2866 1080 w -(Plan) 3060 1080 w -(9) 3300 1080 w -(operating) 3402 1080 w -(system;) 3907 1080 w -(the) 4318 1080 w -(other) 4512 1080 w -(tests) 4808 1080 w -(were) 720 1200 w -(done) 984 1200 w -(on) 1260 1200 w -(the) 1417 1200 w -(vendor) 1606 1200 w +(lines) 1152 900 w +(module) 1512 900 w +(509) 1215 1020 w +(machine-independent headers) 1512 1020 w +(1070) 1152 1140 w +(machine-independent YACC source) 1512 1140 w +(6090) 1152 1260 w +(machine-independent C source) 1512 1260 w +(545) 1215 1500 w +(machine-dependent headers) 1512 1500 w +(6532) 1152 1620 w +(machine-dependent C source) 1512 1620 w +(298) 1215 1860 w +(loader headers) 1512 1860 w +(5215) 1152 1980 w +(loader C source) 1512 1980 w +(The) 720 2196 w +(following) 946 2196 w +(table) 1438 2196 w +(shows) 1723 2196 w +(timing) 2070 2196 w +(of) 2427 2196 w +(a) 2570 2196 w +(test) 2670 2196 w +(program) 2896 2196 w +(that) 3357 2196 w +(plays) 3593 2196 w +(checkers,) 3888 2196 w +(running) 4391 2196 w +(on) 4816 2196 w +(a) 4985 2196 w +(MIPS) 720 2316 w +(R4000.) 979 2316 w +(The) 1393 2316 w +(test) 1609 2316 w +(program) 1825 2316 w +(is) 2276 2316 w +(26) 2390 2316 w +(files) 2550 2316 w +(totaling) 2786 2316 w +(12600) 3192 2316 w +(lines) 3541 2316 w +(of) 3802 2316 w +(C.) 3934 2316 w +(The) 4101 2316 w +(execution) 4316 2316 w +(time) 4825 2316 w +(does) 720 2436 w +(not) 992 2436 w +(significantly) 1193 2436 w +(depend) 1819 2436 w +(on) 2223 2436 w +(library) 2387 2436 w +(implementation.) 2738 2436 w +(Since) 3605 2436 w +(no) 3898 2436 w +(other) 4062 2436 w +(compiler) 4360 2436 w +(runs) 4824 2436 w +(on) 720 2556 w +(Plan) 883 2556 w +(9,) 1124 2556 w +(the) 1259 2556 w +(Plan) 1454 2556 w +(9) 1695 2556 w +(tests) 1798 2556 w +(were) 2070 2556 w +(done) 2340 2556 w +(with) 2622 2556 w +(the) 2866 2556 w +(Plan) 3060 2556 w +(9) 3300 2556 w +(operating) 3402 2556 w +(system;) 3907 2556 w +(the) 4318 2556 w +(other) 4512 2556 w +(tests) 4808 2556 w +(were) 720 2676 w +(done) 984 2676 w +(on) 1260 2676 w +(the) 1417 2676 w +(vendor) 1606 2676 w 10 /LucidaSansUnicode20 f -(\031) 1941 1200 w -10 /LucidaSansUnicode00 f -(s) 1973 1200 w -(operating) 2058 1200 w -(system.) 2558 1200 w -(The) 2996 1200 w -(hardware) 3211 1200 w -(was) 3696 1200 w -(identical) 3914 1200 w -(in) 4360 1200 w -(both) 4486 1200 w -(cases.) 4744 1200 w -(The optimizer in the vendor) 720 1320 w +(\031) 1941 2676 w +10 /LucidaSansUnicode00 f +(s) 1973 2676 w +(operating) 2058 2676 w +(system.) 2558 2676 w +(The) 2996 2676 w +(hardware) 3211 2676 w +(was) 3696 2676 w +(identical) 3914 2676 w +(in) 4360 2676 w +(both) 4486 2676 w +(cases.) 4744 2676 w +(The optimizer in the vendor) 720 2796 w 10 /LucidaSansUnicode20 f -(\031) 2076 1320 w -10 /LucidaSansUnicode00 f -(s compiler is reputed to be extremely good.) 2108 1320 w -(4.49s) 1278 1500 w -(Plan 9) 1728 1500 w -10 /LucidaTypewriter f -(vc) 2056 1500 w -(-N) 2232 1500 w -10 /LucidaSansUnicode00 f -(compile time \(opposite of) 2408 1500 w -10 /LucidaTypewriter f -(-O) 3685 1500 w -10 /LucidaSansUnicode00 f -(\)) 3829 1500 w -(1.72s) 1278 1620 w -(Plan 9) 1728 1620 w -10 /LucidaTypewriter f -(vc) 2056 1620 w -(-N) 2232 1620 w -10 /LucidaSansUnicode00 f -(load time) 2408 1620 w -(148.69s) 1152 1740 w -(Plan 9) 1728 1740 w -10 /LucidaTypewriter f -(vc) 2056 1740 w -(-N) 2232 1740 w -10 /LucidaSansUnicode00 f -(run time) 2408 1740 w -(15.07s) 1215 1980 w -(Plan 9) 1728 1980 w -10 /LucidaTypewriter f -(vc) 2056 1980 w -10 /LucidaSansUnicode00 f -(compile time \() 2232 1980 w -10 /LucidaTypewriter f -(-O) 2926 1980 w -10 /LucidaSansUnicode00 f -(implicit\)) 3102 1980 w -(1.66s) 1278 2100 w -(Plan 9) 1728 2100 w -10 /LucidaTypewriter f -(vc) 2056 2100 w -10 /LucidaSansUnicode00 f -(load time) 2232 2100 w -(89.96s) 1215 2220 w -(Plan 9) 1728 2220 w -10 /LucidaTypewriter f -(vc) 2056 2220 w -10 /LucidaSansUnicode00 f -(run time) 2232 2220 w -(14.83s) 1215 2460 w -(vendor) 1728 2460 w -10 /LucidaTypewriter f -(cc) 2095 2460 w -10 /LucidaSansUnicode00 f -(compile time) 2271 2460 w -(0.38s) 1278 2580 w -(vendor) 1728 2580 w -10 /LucidaTypewriter f -(cc) 2095 2580 w -10 /LucidaSansUnicode00 f -(load time) 2271 2580 w -(104.75s) 1152 2700 w -(vendor) 1728 2700 w -10 /LucidaTypewriter f -(cc) 2095 2700 w -10 /LucidaSansUnicode00 f -(run time) 2271 2700 w -(43.59s) 1215 2940 w -(vendor) 1728 2940 w -10 /LucidaTypewriter f -(cc) 2095 2940 w -(-O) 2271 2940 w -10 /LucidaSansUnicode00 f -(compile time) 2447 2940 w -(0.38s) 1278 3060 w -(vendor) 1728 3060 w -10 /LucidaTypewriter f -(cc) 2095 3060 w -(-O) 2271 3060 w -10 /LucidaSansUnicode00 f -(load time) 2447 3060 w -(76.19s) 1215 3180 w -(vendor) 1728 3180 w -10 /LucidaTypewriter f -(cc) 2095 3180 w -(-O) 2271 3180 w -10 /LucidaSansUnicode00 f -(run time) 2447 3180 w -(8.19s) 1278 3420 w -(vendor) 1728 3420 w -10 /LucidaTypewriter f -(cc) 2095 3420 w -(-O3) 2271 3420 w -10 /LucidaSansUnicode00 f -(compile time) 2519 3420 w -(35.97s) 1215 3540 w -(vendor) 1728 3540 w -10 /LucidaTypewriter f -(cc) 2095 3540 w -(-O3) 2271 3540 w -10 /LucidaSansUnicode00 f -(load time) 2519 3540 w -(71.16s) 1215 3660 w -(vendor) 1728 3660 w -10 /LucidaTypewriter f -(cc) 2095 3660 w -(-O3) 2271 3660 w -10 /LucidaSansUnicode00 f -(run time) 2519 3660 w -(To) 720 3876 w -(compare) 880 3876 w -(the) 1336 3876 w -(Intel) 1528 3876 w -(compiler,) 1778 3876 w -(a) 2270 3876 w -(program) 2362 3876 w -(that) 2815 3876 w -(is) 3043 3876 w -(about) 3160 3876 w -(40%) 3475 3876 w -(bit) 3705 3876 w -(manipulation) 3871 3876 w -(and) 4545 3876 w -(about) 4762 3876 w -(60%) 720 3996 w -(single) 954 3996 w -(precision) 1284 3996 w -(floating) 1767 3996 w -(point) 2179 3996 w -(was) 2471 3996 w -(run) 2694 3996 w -(on) 2899 3996 w -(the) 3062 3996 w -(same) 3257 3996 w -(33) 3552 3996 w -(MHz) 3718 3996 w -(486,) 3975 3996 w -(once) 4236 3996 w -(under) 4506 3996 w -(Win\255) 4830 3996 w -(dows) 720 4116 w -(compiled) 1006 4116 w -(with) 1485 4116 w -(the) 1724 4116 w -(Watcom) 1913 4116 w -(compiler,) 2330 4116 w -(version) 2819 4116 w -(10.0,) 3206 4116 w -(in) 3494 4116 w -(16-bit) 3620 4116 w -(mode) 3968 4116 w -(and) 4276 4116 w -(once) 4491 4116 w -(under) 4756 4116 w -(Plan) 720 4236 w -(9) 956 4236 w -(in) 1054 4236 w -(32-bit) 1180 4236 w -(mode.) 1528 4236 w -(The) 1900 4236 w -(Plan) 2116 4236 w -(9) 2352 4236 w -(execution) 2450 4236 w -(time) 2960 4236 w -(was) 3210 4236 w -(27) 3428 4236 w -(sec) 3589 4236 w -(while) 3782 4236 w -(the) 4069 4236 w -(Windows) 4258 4236 w -(execu\255) 4721 4236 w -(tion time was 31 sec.) 720 4356 w +(\031) 2076 2796 w +10 /LucidaSansUnicode00 f +(s compiler is reputed to be extremely good.) 2108 2796 w +(4.49s) 1278 2976 w +(Plan 9) 1728 2976 w +10 /LucidaTypewriter f +(vc) 2056 2976 w +(-N) 2232 2976 w +10 /LucidaSansUnicode00 f +(compile time \(opposite of) 2408 2976 w +10 /LucidaTypewriter f +(-O) 3685 2976 w +10 /LucidaSansUnicode00 f +(\)) 3829 2976 w +(1.72s) 1278 3096 w +(Plan 9) 1728 3096 w +10 /LucidaTypewriter f +(vc) 2056 3096 w +(-N) 2232 3096 w +10 /LucidaSansUnicode00 f +(load time) 2408 3096 w +(148.69s) 1152 3216 w +(Plan 9) 1728 3216 w +10 /LucidaTypewriter f +(vc) 2056 3216 w +(-N) 2232 3216 w +10 /LucidaSansUnicode00 f +(run time) 2408 3216 w +(15.07s) 1215 3456 w +(Plan 9) 1728 3456 w +10 /LucidaTypewriter f +(vc) 2056 3456 w +10 /LucidaSansUnicode00 f +(compile time \() 2232 3456 w +10 /LucidaTypewriter f +(-O) 2926 3456 w +10 /LucidaSansUnicode00 f +(implicit\)) 3102 3456 w +(1.66s) 1278 3576 w +(Plan 9) 1728 3576 w +10 /LucidaTypewriter f +(vc) 2056 3576 w +10 /LucidaSansUnicode00 f +(load time) 2232 3576 w +(89.96s) 1215 3696 w +(Plan 9) 1728 3696 w +10 /LucidaTypewriter f +(vc) 2056 3696 w +10 /LucidaSansUnicode00 f +(run time) 2232 3696 w +(14.83s) 1215 3936 w +(vendor) 1728 3936 w +10 /LucidaTypewriter f +(cc) 2095 3936 w +10 /LucidaSansUnicode00 f +(compile time) 2271 3936 w +(0.38s) 1278 4056 w +(vendor) 1728 4056 w +10 /LucidaTypewriter f +(cc) 2095 4056 w +10 /LucidaSansUnicode00 f +(load time) 2271 4056 w +(104.75s) 1152 4176 w +(vendor) 1728 4176 w +10 /LucidaTypewriter f +(cc) 2095 4176 w +10 /LucidaSansUnicode00 f +(run time) 2271 4176 w +(43.59s) 1215 4416 w +(vendor) 1728 4416 w +10 /LucidaTypewriter f +(cc) 2095 4416 w +(-O) 2271 4416 w +10 /LucidaSansUnicode00 f +(compile time) 2447 4416 w +(0.38s) 1278 4536 w +(vendor) 1728 4536 w +10 /LucidaTypewriter f +(cc) 2095 4536 w +(-O) 2271 4536 w +10 /LucidaSansUnicode00 f +(load time) 2447 4536 w +(76.19s) 1215 4656 w +(vendor) 1728 4656 w +10 /LucidaTypewriter f +(cc) 2095 4656 w +(-O) 2271 4656 w +10 /LucidaSansUnicode00 f +(run time) 2447 4656 w +(8.19s) 1278 4896 w +(vendor) 1728 4896 w +10 /LucidaTypewriter f +(cc) 2095 4896 w +(-O3) 2271 4896 w +10 /LucidaSansUnicode00 f +(compile time) 2519 4896 w +(35.97s) 1215 5016 w +(vendor) 1728 5016 w +10 /LucidaTypewriter f +(cc) 2095 5016 w +(-O3) 2271 5016 w +10 /LucidaSansUnicode00 f +(load time) 2519 5016 w +(71.16s) 1215 5136 w +(vendor) 1728 5136 w +10 /LucidaTypewriter f +(cc) 2095 5136 w +(-O3) 2271 5136 w +10 /LucidaSansUnicode00 f +(run time) 2519 5136 w +(To) 720 5352 w +(compare) 880 5352 w +(the) 1336 5352 w +(Intel) 1528 5352 w +(compiler,) 1778 5352 w +(a) 2270 5352 w +(program) 2362 5352 w +(that) 2815 5352 w +(is) 3043 5352 w +(about) 3160 5352 w +(40%) 3475 5352 w +(bit) 3705 5352 w +(manipulation) 3871 5352 w +(and) 4545 5352 w +(about) 4762 5352 w +(60%) 720 5472 w +(single) 954 5472 w +(precision) 1284 5472 w +(floating) 1767 5472 w +(point) 2179 5472 w +(was) 2471 5472 w +(run) 2694 5472 w +(on) 2899 5472 w +(the) 3062 5472 w +(same) 3257 5472 w +(33) 3552 5472 w +(MHz) 3718 5472 w +(486,) 3975 5472 w +(once) 4236 5472 w +(under) 4506 5472 w +(Win\255) 4830 5472 w +(dows) 720 5592 w +(compiled) 1006 5592 w +(with) 1485 5592 w +(the) 1724 5592 w +(Watcom) 1913 5592 w +(compiler,) 2330 5592 w +(version) 2819 5592 w +(10.0,) 3206 5592 w +(in) 3494 5592 w +(16-bit) 3620 5592 w +(mode) 3968 5592 w +(and) 4276 5592 w +(once) 4491 5592 w +(under) 4756 5592 w +(Plan) 720 5712 w +(9) 956 5712 w +(in) 1054 5712 w +(32-bit) 1180 5712 w +(mode.) 1528 5712 w +(The) 1900 5712 w +(Plan) 2116 5712 w +(9) 2352 5712 w +(execution) 2450 5712 w +(time) 2960 5712 w +(was) 3210 5712 w +(27) 3428 5712 w +(sec) 3589 5712 w +(while) 3782 5712 w +(the) 4069 5712 w +(Windows) 4258 5712 w +(execu\255) 4721 5712 w +(tion time was 31 sec.) 720 5832 w 10 /LucidaSans-Demi f -(8.) 720 4596 w -(Conclusions) 873 4596 w -10 /LucidaSansUnicode00 f -(The) 720 4752 w -(new) 953 4752 w -(compilers) 1200 4752 w -(compile) 1726 4752 w -(quickly,) 2160 4752 w -(load) 2588 4752 w -(slowly,) 2848 4752 w -(and) 3231 4752 w -(produce) 3463 4752 w -(medium) 3913 4752 w -(quality) 4362 4752 w -(object) 4742 4752 w -(code.) 720 4872 w -(The) 1061 4872 w -(compilers) 1288 4872 w -(are) 1808 4872 w -(relatively) 2006 4872 w -(portable,) 2488 4872 w -(requiring) 2971 4872 w -(but) 3462 4872 w -(a) 3670 4872 w -(couple) 3771 4872 w -(of) 4139 4872 w -(weeks) 4283 4872 w +(8.) 720 6072 w +(Conclusions) 873 6072 w +10 /LucidaSansUnicode00 f +(The) 720 6228 w +(new) 953 6228 w +(compilers) 1200 6228 w +(compile) 1726 6228 w +(quickly,) 2160 6228 w +(load) 2588 6228 w +(slowly,) 2848 6228 w +(and) 3231 6228 w +(produce) 3463 6228 w +(medium) 3913 6228 w +(quality) 4362 6228 w +(object) 4742 6228 w +(code.) 720 6348 w +(The) 1061 6348 w +(compilers) 1288 6348 w +(are) 1808 6348 w +(relatively) 2006 6348 w +(portable,) 2488 6348 w +(requiring) 2971 6348 w +(but) 3462 6348 w +(a) 3670 6348 w +(couple) 3771 6348 w +(of) 4139 6348 w +(weeks) 4283 6348 w 10 /LucidaSansUnicode20 f -(\031) 4581 4872 w -10 /LucidaSansUnicode00 f -(work) 4659 4872 w -(to) 4942 4872 w -(produce) 720 4992 w -(a) 1152 4992 w -(compiler) 1242 4992 w -(for) 1700 4992 w -(a) 1874 4992 w -(different) 1964 4992 w -(computer.) 2417 4992 w -(For) 2980 4992 w -(Plan) 3171 4992 w -(9,) 3407 4992 w -(where) 3537 4992 w -(we) 3865 4992 w -(needed) 4034 4992 w -(several) 4426 4992 w -(com\255) 4802 4992 w -(pilers) 720 5112 w -(with) 1028 5112 w -(specialized) 1272 5112 w -(features) 1850 5112 w -(and) 2284 5112 w -(our) 2503 5112 w -(own) 2706 5112 w -(object) 2945 5112 w -(formats,) 3281 5112 w -(this) 3726 5112 w -(project) 3943 5112 w -(was) 4320 5112 w -(indispens\255) 4541 5112 w -(able.) 720 5232 w -(It) 1032 5232 w -(is) 1143 5232 w -(also) 1268 5232 w -(necessary) 1509 5232 w -(for) 2029 5232 w -(us) 2213 5232 w -(to) 2371 5232 w -(be) 2515 5232 w -(able) 2680 5232 w -(to) 2929 5232 w -(freely) 3073 5232 w -(distribute) 3390 5232 w -(our) 3904 5232 w -(compilers) 4114 5232 w -(with) 4634 5232 w -(the) 4885 5232 w -(Plan 9 distribution.) 720 5352 w -(Two) 720 5508 w -(problems) 955 5508 w -(have) 1446 5508 w -(come) 1705 5508 w -(up) 2000 5508 w -(in) 2159 5508 w -(retrospect.) 2284 5508 w -(The) 2876 5508 w -(first) 3092 5508 w -(has) 3322 5508 w -(to) 3525 5508 w -(do) 3658 5508 w -(with) 3817 5508 w -(the) 4057 5508 w -(division) 4247 5508 w -(of) 4658 5508 w -(labor) 4791 5508 w -(between) 720 5628 w -(compiler) 1176 5628 w -(and) 1647 5628 w -(loader.) 1875 5628 w -(Plan) 2292 5628 w -(9) 2541 5628 w -(runs) 2652 5628 w -(on) 2916 5628 w -(multi-processors) 3087 5628 w -(and) 3970 5628 w -(as) 4198 5628 w -(such) 4352 5628 w -(compila\255) 4626 5628 w -(tions) 720 5748 w -(are) 1022 5748 w -(often) 1236 5748 w -(done) 1551 5748 w -(in) 1855 5748 w -(parallel.) 2008 5748 w -(Unfortunately,) 2491 5748 w -(all) 3246 5748 w -(compilations) 3422 5748 w -(must) 4106 5748 w -(be) 4412 5748 w -(complete) 4594 5748 w -(before) 720 5868 w -(loading) 1073 5868 w -(can) 1473 5868 w -(begin.) 1680 5868 w -(The) 2055 5868 w -(load) 2275 5868 w -(is) 2521 5868 w -(then) 2639 5868 w -(single-threaded.) 2894 5868 w -(With) 3776 5868 w -(this) 4028 5868 w -(model,) 4245 5868 w -(any) 4617 5868 w -(shift) 4824 5868 w -(of) 720 5988 w -(work) 856 5988 w -(from) 1131 5988 w -(compile) 1401 5988 w -(to) 1821 5988 w -(load) 1958 5988 w -(results) 2205 5988 w -(in) 2571 5988 w -(a) 2701 5988 w -(significant) 2795 5988 w -(increase) 3338 5988 w -(in) 3778 5988 w -(real) 3908 5988 w -(time.) 4128 5988 w -(The) 4446 5988 w -(same) 4666 5988 w -(is) 4960 5988 w -(true) 720 6108 w -(of) 954 6108 w -(libraries) 1090 6108 w -(that) 1522 6108 w -(are) 1751 6108 w -(compiled) 1941 6108 w -(infrequently) 2424 6108 w -(and) 3048 6108 w -(loaded) 3266 6108 w -(often.) 3631 6108 w -(In) 3986 6108 w -(the) 4114 6108 w -(future,) 4306 6108 w -(we) 4670 6108 w -(may) 4840 6108 w -(try to put some of the loader work back into the compiler.) 720 6228 w -(The) 720 6384 w -(second) 962 6384 w -(problem) 1367 6384 w -(comes) 1834 6384 w -(from) 2207 6384 w -(the) 2500 6384 w -(various) 2716 6384 w -(optimizations) 3129 6384 w -(performed) 3855 6384 w -(over) 4428 6384 w -(several) 4700 6384 w -(passes.) 720 6504 w -(Often) 1163 6504 w -(optimizations) 1485 6504 w -(in) 2201 6504 w -(different) 2344 6504 w -(passes) 2813 6504 w -(depend) 3191 6504 w -(on) 3605 6504 w -(each) 3779 6504 w -(other.) 4054 6504 w -(Iterating) 4426 6504 w -(the) 4885 6504 w -(passes) 720 6624 w -(could) 1082 6624 w -(compromise) 1383 6624 w -(efficiency,) 2017 6624 w -(or) 2544 6624 w -(even) 2681 6624 w -(loop.) 2942 6624 w -(We) 3255 6624 w -(see) 3432 6624 w -(no) 3630 6624 w -(real) 3788 6624 w -(solution) 4004 6624 w -(to) 4431 6624 w -(this) 4564 6624 w -(prob\255) 4779 6624 w -(lem.) 720 6744 w +(\031) 4581 6348 w +10 /LucidaSansUnicode00 f +(work) 4659 6348 w +(to) 4942 6348 w +(produce) 720 6468 w +(a) 1152 6468 w +(compiler) 1242 6468 w +(for) 1700 6468 w +(a) 1874 6468 w +(different) 1964 6468 w +(computer.) 2417 6468 w +(For) 2980 6468 w +(Plan) 3171 6468 w +(9,) 3407 6468 w +(where) 3537 6468 w +(we) 3865 6468 w +(needed) 4034 6468 w +(several) 4426 6468 w +(com\255) 4802 6468 w +(pilers) 720 6588 w +(with) 1028 6588 w +(specialized) 1272 6588 w +(features) 1850 6588 w +(and) 2284 6588 w +(our) 2503 6588 w +(own) 2706 6588 w +(object) 2945 6588 w +(formats,) 3281 6588 w +(this) 3726 6588 w +(project) 3943 6588 w +(was) 4320 6588 w +(indispens\255) 4541 6588 w +(able.) 720 6708 w +(It) 1032 6708 w +(is) 1143 6708 w +(also) 1268 6708 w +(necessary) 1509 6708 w +(for) 2029 6708 w +(us) 2213 6708 w +(to) 2371 6708 w +(be) 2515 6708 w +(able) 2680 6708 w +(to) 2929 6708 w +(freely) 3073 6708 w +(distribute) 3390 6708 w +(our) 3904 6708 w +(compilers) 4114 6708 w +(with) 4634 6708 w +(the) 4885 6708 w +(Plan 9 distribution.) 720 6828 w +(Two) 720 6984 w +(problems) 955 6984 w +(have) 1446 6984 w +(come) 1705 6984 w +(up) 2000 6984 w +(in) 2159 6984 w +(retrospect.) 2284 6984 w +(The) 2876 6984 w +(first) 3092 6984 w +(has) 3322 6984 w +(to) 3525 6984 w +(do) 3658 6984 w +(with) 3817 6984 w +(the) 4057 6984 w +(division) 4247 6984 w +(of) 4658 6984 w +(labor) 4791 6984 w +(between) 720 7104 w +(compiler) 1176 7104 w +(and) 1647 7104 w +(loader.) 1875 7104 w +(Plan) 2292 7104 w +(9) 2541 7104 w +(runs) 2652 7104 w +(on) 2916 7104 w +(multi-processors) 3087 7104 w +(and) 3970 7104 w +(as) 4198 7104 w +(such) 4352 7104 w +(compila\255) 4626 7104 w +(tions) 720 7224 w +(are) 1022 7224 w +(often) 1236 7224 w +(done) 1551 7224 w +(in) 1855 7224 w +(parallel.) 2008 7224 w +(Unfortunately,) 2491 7224 w +(all) 3246 7224 w +(compilations) 3422 7224 w +(must) 4106 7224 w +(be) 4412 7224 w +(complete) 4594 7224 w cleartomark showpage saveobj restore @@ -8076,160 +8023,246 @@ 11 pagesetup 10 /LucidaSansUnicode00 f (\255 11 \255) 2752 480 w +(before) 720 840 w +(loading) 1073 840 w +(can) 1473 840 w +(begin.) 1680 840 w +(The) 2055 840 w +(load) 2275 840 w +(is) 2521 840 w +(then) 2639 840 w +(single-threaded.) 2894 840 w +(With) 3776 840 w +(this) 4028 840 w +(model,) 4245 840 w +(any) 4617 840 w +(shift) 4824 840 w +(of) 720 960 w +(work) 856 960 w +(from) 1131 960 w +(compile) 1401 960 w +(to) 1821 960 w +(load) 1958 960 w +(results) 2205 960 w +(in) 2571 960 w +(a) 2701 960 w +(significant) 2795 960 w +(increase) 3338 960 w +(in) 3778 960 w +(real) 3908 960 w +(time.) 4128 960 w +(The) 4446 960 w +(same) 4666 960 w +(is) 4960 960 w +(true) 720 1080 w +(of) 954 1080 w +(libraries) 1090 1080 w +(that) 1522 1080 w +(are) 1751 1080 w +(compiled) 1941 1080 w +(infrequently) 2424 1080 w +(and) 3048 1080 w +(loaded) 3266 1080 w +(often.) 3631 1080 w +(In) 3986 1080 w +(the) 4114 1080 w +(future,) 4306 1080 w +(we) 4670 1080 w +(may) 4840 1080 w +(try to put some of the loader work back into the compiler.) 720 1200 w +(The) 720 1356 w +(second) 962 1356 w +(problem) 1367 1356 w +(comes) 1834 1356 w +(from) 2207 1356 w +(the) 2500 1356 w +(various) 2716 1356 w +(optimizations) 3129 1356 w +(performed) 3855 1356 w +(over) 4428 1356 w +(several) 4700 1356 w +(passes.) 720 1476 w +(Often) 1163 1476 w +(optimizations) 1485 1476 w +(in) 2201 1476 w +(different) 2344 1476 w +(passes) 2813 1476 w +(depend) 3191 1476 w +(on) 3605 1476 w +(each) 3779 1476 w +(other.) 4054 1476 w +(Iterating) 4426 1476 w +(the) 4885 1476 w +(passes) 720 1596 w +(could) 1082 1596 w +(compromise) 1383 1596 w +(efficiency,) 2017 1596 w +(or) 2544 1596 w +(even) 2681 1596 w +(loop.) 2942 1596 w +(We) 3255 1596 w +(see) 3432 1596 w +(no) 3630 1596 w +(real) 3788 1596 w +(solution) 4004 1596 w +(to) 4431 1596 w +(this) 4564 1596 w +(prob\255) 4779 1596 w +(lem.) 720 1716 w 10 /LucidaSans-Demi f -(9.) 720 840 w -(References) 873 840 w -10 /LucidaSansUnicode00 f -([Aho87]) 720 996 w -(A.) 1149 996 w -(V.) 1295 996 w -(Aho,) 1437 996 w -(R.) 1706 996 w -(Sethi,) 1846 996 w -(and) 2161 996 w -(J.) 2386 996 w -(D.) 2494 996 w -(Ullman,) 2646 996 w +(9.) 720 1956 w +(References) 873 1956 w +10 /LucidaSansUnicode00 f +([Aho87]) 720 2112 w +(A.) 1149 2112 w +(V.) 1295 2112 w +(Aho,) 1437 2112 w +(R.) 1706 2112 w +(Sethi,) 1846 2112 w +(and) 2161 2112 w +(J.) 2386 2112 w +(D.) 2494 2112 w +(Ullman,) 2646 2112 w 10 /LucidaSans-Italic f -(Compilers) 3060 996 w +(Compilers) 3060 2112 w 10 /LucidaSansUnicode20 f -(\023) 3593 996 w +(\023) 3593 2112 w 10 /LucidaSans-Italic f -(Principles,) 3689 996 w -(Techniques,) 4235 996 w -(and) 4856 996 w -(Tools,) 720 1116 w -10 /LucidaSansUnicode00 f -(Addison Wesley, Reading, MA, 1987.) 1038 1116 w -([ANSI90]) 720 1272 w +(Principles,) 3689 2112 w +(Techniques,) 4235 2112 w +(and) 4856 2112 w +(Tools,) 720 2232 w +10 /LucidaSansUnicode00 f +(Addison Wesley, Reading, MA, 1987.) 1038 2232 w +([ANSI90]) 720 2388 w 10 /LucidaSans-Italic f -(American) 1198 1272 w -(National) 1723 1272 w -(Standard) 2194 1272 w -(for) 2701 1272 w -(Information) 2904 1272 w -(Systems) 3538 1272 w +(American) 1198 2388 w +(National) 1723 2388 w +(Standard) 2194 2388 w +(for) 2701 2388 w +(Information) 2904 2388 w +(Systems) 3538 2388 w 10 /LucidaSansUnicode20 f -(\023) 3990 1272 w +(\023) 3990 2388 w 10 /LucidaSans-Italic f -(Programming) 4100 1272 w -(Lan\255) 4831 1272 w -(guage C) 720 1392 w -10 /LucidaSansUnicode00 f -(, American National Standards Institute, Inc., New York, 1990.) 1118 1392 w -([Dav91]) 720 1548 w -(J.) 1137 1548 w -(W.) 1243 1548 w -(Davidson) 1404 1548 w -(and) 1896 1548 w -(D.) 2120 1548 w -(B.) 2271 1548 w -(Whalley,) 2405 1548 w +(Programming) 4100 2388 w +(Lan\255) 4831 2388 w +(guage C) 720 2508 w +10 /LucidaSansUnicode00 f +(, American National Standards Institute, Inc., New York, 1990.) 1118 2508 w +([Dav91]) 720 2664 w +(J.) 1137 2664 w +(W.) 1243 2664 w +(Davidson) 1404 2664 w +(and) 1896 2664 w +(D.) 2120 2664 w +(B.) 2271 2664 w +(Whalley,) 2405 2664 w 10 /LucidaSansUnicode20 f -(\030\030) 2850 1548 w -10 /LucidaSansUnicode00 f -(Methods) 2914 1548 w -(for) 3374 1548 w -(Saving) 3557 1548 w -(and) 3915 1548 w -(Restoring) 4139 1548 w -(Register) 4645 1548 w -(Values) 720 1668 w -(across) 1088 1668 w -(Function) 1448 1668 w -(Calls) 1916 1668 w +(\030\030) 2850 2664 w +10 /LucidaSansUnicode00 f +(Methods) 2914 2664 w +(for) 3374 2664 w +(Saving) 3557 2664 w +(and) 3915 2664 w +(Restoring) 4139 2664 w +(Register) 4645 2664 w +(Values) 720 2784 w +(across) 1088 2784 w +(Function) 1448 2784 w +(Calls) 1916 2784 w 10 /LucidaSansUnicode20 f -(\031\031) 2149 1668 w -10 /LucidaSansUnicode00 f -(,) 2213 1668 w +(\031\031) 2149 2784 w +10 /LucidaSansUnicode00 f +(,) 2213 2784 w 10 /LucidaSans-Italic f -(Software) 2295 1668 w +(Software) 2295 2784 w 10 /LucidaSansUnicode20 f -(\023) 2723 1668 w +(\023) 2723 2784 w 10 /LucidaSans-Italic f -(Practice) 2773 1668 w -(and) 3210 1668 w -(Experience,) 3444 1668 w -10 /LucidaSansUnicode00 f -(Vol) 4044 1668 w -(21\(2\),) 4249 1668 w -(pp.) 4586 1668 w -(149-) 4793 1668 w -(165, February 1991.) 720 1788 w -([Joh79]) 720 1944 w -(S.) 1113 1944 w -(C.) 1246 1944 w -(Johnson,) 1395 1944 w +(Practice) 2773 2784 w +(and) 3210 2784 w +(Experience,) 3444 2784 w +10 /LucidaSansUnicode00 f +(Vol) 4044 2784 w +(21\(2\),) 4249 2784 w +(pp.) 4586 2784 w +(149-) 4793 2784 w +(165, February 1991.) 720 2904 w +([Joh79]) 720 3060 w +(S.) 1113 3060 w +(C.) 1246 3060 w +(Johnson,) 1395 3060 w 10 /LucidaSansUnicode20 f -(\030\030) 1865 1944 w -10 /LucidaSansUnicode00 f -(YACC) 1929 1944 w +(\030\030) 1865 3060 w +10 /LucidaSansUnicode00 f +(YACC) 1929 3060 w 10 /LucidaSansUnicode20 f -(\023) 2246 1944 w -10 /LucidaSansUnicode00 f -(Yet) 2344 1944 w -(Another) 2547 1944 w -(Compiler) 2983 1944 w -(Compiler) 3472 1944 w +(\023) 2246 3060 w +10 /LucidaSansUnicode00 f +(Yet) 2344 3060 w +(Another) 2547 3060 w +(Compiler) 2983 3060 w +(Compiler) 3472 3060 w 10 /LucidaSansUnicode20 f -(\031\031) 3913 1944 w -10 /LucidaSansUnicode00 f -(,) 3977 1944 w +(\031\031) 3913 3060 w +10 /LucidaSansUnicode00 f +(,) 3977 3060 w 10 /LucidaSans-Italic f -(UNIX) 4057 1944 w -(Programmer's) 4339 1944 w -(Manual, Seventh Ed., Vol. 2A,) 720 2064 w -10 /LucidaSansUnicode00 f -(AT&T Bell Laboratories, Murray Hill, NJ, 1979.) 2178 2064 w -([Set70]) 720 2220 w -(R.) 1118 2220 w -(Sethi) 1273 2220 w -(and) 1571 2220 w -(J.) 1811 2220 w -(D.) 1934 2220 w -(Ullman,) 2101 2220 w +(UNIX) 4057 3060 w +(Programmer's) 4339 3060 w +(Manual, Seventh Ed., Vol. 2A,) 720 3180 w +10 /LucidaSansUnicode00 f +(AT&T Bell Laboratories, Murray Hill, NJ, 1979.) 2178 3180 w +([Set70]) 720 3336 w +(R.) 1118 3336 w +(Sethi) 1273 3336 w +(and) 1571 3336 w +(J.) 1811 3336 w +(D.) 1934 3336 w +(Ullman,) 2101 3336 w 10 /LucidaSansUnicode20 f -(\030\030) 2530 2220 w -10 /LucidaSansUnicode00 f -(The) 2594 2220 w -(Generation) 2835 2220 w -(of) 3426 2220 w -(Optimal) 3584 2220 w -(Code) 4028 2220 w -(for) 4337 2220 w -(Arithmetic) 4536 2220 w -(Expressions) 720 2340 w +(\030\030) 2530 3336 w +10 /LucidaSansUnicode00 f +(The) 2594 3336 w +(Generation) 2835 3336 w +(of) 3426 3336 w +(Optimal) 3584 3336 w +(Code) 4028 3336 w +(for) 4337 3336 w +(Arithmetic) 4536 3336 w +(Expressions) 720 3456 w 10 /LucidaSansUnicode20 f -(\031\031) 1300 2340 w -10 /LucidaSansUnicode00 f -(,) 1364 2340 w +(\031\031) 1300 3456 w +10 /LucidaSansUnicode00 f +(,) 1364 3456 w 10 /LucidaSans-Italic f -(Journal of the ACM,) 1428 2340 w -10 /LucidaSansUnicode00 f -(Vol 17\(4\), pp. 715-728, 1970.) 2416 2340 w -([Szy78]) 720 2496 w -(T.) 1112 2496 w -(G.) 1244 2496 w -(Szymanski,) 1385 2496 w +(Journal of the ACM,) 1428 3456 w +10 /LucidaSansUnicode00 f +(Vol 17\(4\), pp. 715-728, 1970.) 2416 3456 w +([Szy78]) 720 3612 w +(T.) 1112 3612 w +(G.) 1244 3612 w +(Szymanski,) 1385 3612 w 10 /LucidaSansUnicode20 f -(\030\030) 1965 2496 w -10 /LucidaSansUnicode00 f -(Assembling) 2029 2496 w -(Code) 2631 2496 w -(for) 2917 2496 w -(Machines) 3093 2496 w -(with) 3583 2496 w -(Span-dependent) 3826 2496 w -(Instruc\255) 4674 2496 w -(tions) 720 2616 w +(\030\030) 1965 3612 w +10 /LucidaSansUnicode00 f +(Assembling) 2029 3612 w +(Code) 2631 3612 w +(for) 2917 3612 w +(Machines) 3093 3612 w +(with) 3583 3612 w +(Span-dependent) 3826 3612 w +(Instruc\255) 4674 3612 w +(tions) 720 3732 w 10 /LucidaSansUnicode20 f -(\031\031) 960 2616 w -10 /LucidaSansUnicode00 f -(,) 1024 2616 w +(\031\031) 960 3732 w +10 /LucidaSansUnicode00 f +(,) 1024 3732 w 10 /LucidaSans-Italic f -(Communications of the ACM,) 1088 2616 w -10 /LucidaSansUnicode00 f -(Vol 21\(4\), pp. 300-308, 1978.) 2526 2616 w +(Communications of the ACM,) 1088 3732 w +10 /LucidaSansUnicode00 f +(Vol 21\(4\), pp. 300-308, 1978.) 2526 3732 w cleartomark showpage saveobj restore diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/2a --- a/sys/man/1/2a Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/1/2a Tue Mar 06 23:32:10 2012 +0100 @@ -1,6 +1,6 @@ .TH 2A 1 .SH NAME -0a, 1a, 2a, 5a, 6a, 7a, 8a, ka, qa, va \- assemblers +0a, 1a, 2a, 5a, 6a, 7a, 8a, 9a, ka, qa, va \- assemblers .SH SYNOPSIS .B 2a [ diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/2c --- a/sys/man/1/2c Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/1/2c Tue Mar 06 23:32:10 2012 +0100 @@ -1,6 +1,6 @@ .TH 2C 1 .SH NAME -0c, 1c, 2c, 5c, 6c, 7c, 8c, kc, qc, vc \- C compilers +0c, 1c, 2c, 5c, 6c, 7c, 8c, 9c, kc, qc, vc \- C compilers .SH SYNOPSIS .B 2c [ @@ -39,7 +39,7 @@ little-endian ARM .TP .B "6c amd64 -AMD64 and compatibles (e.g., Intel EM64T) +AMD64 and compatibles (e.g., Intel64) .TP .B "7c alpha Digital Alpha APX @@ -47,11 +47,14 @@ .B "8c 386 Intel i386, i486, Pentium, etc. .TP +.B "9c power64 +64-bit PowerPC +.TP .B "kc sparc -Sun SPARC +Sun (now Oracle) SPARC .TP .B "qc power -Power PC +PowerPC .TP .B "vc mips big-endian MIPS 3000 family @@ -70,6 +73,7 @@ .BR 6 , .BR 7 , .BR 8 , +.BR 9 , .BR k , .BR q , or @@ -218,7 +222,8 @@ .IB file .c , and not on standard output. .PP -The compilers support several extensions to ANSI C: +The compilers support several extensions to 1989 ANSI C, +some of which were adopted in later ANSI C standards: .TF \| .PD .TP @@ -478,7 +483,9 @@ differs to that of .IR cpp (1). .PP -Some features of C99, the 1999 ANSI C standard, +Some new features of C99, the 1999 ANSI C standard, +are implemented. +No new features of C11, the 2011 ANSI C standard, are implemented. .PP .B switch diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/2l --- a/sys/man/1/2l Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/1/2l Tue Mar 06 23:32:10 2012 +0100 @@ -1,6 +1,6 @@ .TH 2L 1 .SH NAME -0l, 1l, 2l, 5l, 6l, 7l, 8l, kl, ql, vl \- loaders +0l, 1l, 2l, 5l, 6l, 7l, 8l, 9l, kl, ql, vl \- loaders .SH SYNOPSIS .B 2l [ diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/bsplit --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sys/man/1/bsplit Tue Mar 06 23:32:10 2012 +0100 @@ -0,0 +1,41 @@ +.TH BSPLIT 1 +.SH NAME +bsplit \- split binary data into fixed-size chunks +.SH SYNOPSIS +.B bsplit +[ +.B -p +.I prefix +] [ +.B -s +.I size +] [ +.I file +\&... +] +.SH DESCRIPTION +.I Bsplit +copies binary data from input +.I files +into a series of files with names starting with +.I prefix +.RL ( bs.\& +by default) +and of a fixed +.I size +(512MB by default). +The last file may be shorter than +.IR size . +This can be useful when copying large amounts of data onto +fixed-size storage media such as CDs or DVDs. +.\" .SH EXAMPLES +.SH FILES +.I prefixNNNNN +output files +.SH SOURCE +.B /sys/src/cmd/bsplit.c +.SH SEE ALSO +.IR split (1), +.IR tarsplit (1) +.\" .SH DIAGNOSTICS +.\" .SH BUGS diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/db --- a/sys/man/1/db Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/1/db Tue Mar 06 23:32:10 2012 +0100 @@ -358,7 +358,7 @@ and advance (a local copy of) dot by the number of bytes fetched. The total number of bytes in a format becomes the -.IR current increment . +.IR "current increment" . .ta 2.5n .5i .RS .TP diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/spin --- a/sys/man/1/spin Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/1/spin Tue Mar 06 23:32:10 2012 +0100 @@ -3,103 +3,23 @@ spin - verification tool for models of concurrent systems .SH SYNOPSIS .B spin -.B -a [ -.B -m -] -[ -.BI -P cpp +.I options ] .I file -.PP -.B spin -[ -.B -bglmprsv -] -[ -.BI -n N -] -[ -.BI -P cpp -] -.I file -.PP -.B spin -.B -c -[ -.B -t -] -[ -.BI -P cpp -] -.I file -.PP -.B spin -.B -d -[ -.BI -P cpp -] -.I file -.PP -.B spin -.B -f -.I ltl -.PP -.B spin -.B -F -.I file -.PP -.B spin -.B -i -[ -.B -bglmprsv -] -[ -.BI -n N -] -[ -.BI -P cpp -] -.I file -.PP -.B spin -.B -M -[ -.B -t -] -[ -.BI -P cpp -] -.I file -.PP -.B spin -.BR -t [ \fIN ] -[ -.B -bglmprsv -] -[ -.BI -j N -] -[ -.BI -P cpp -] -.I file -.PP +.br .B spin .B -V .SH DESCRIPTION .I Spin is a tool for analyzing the logical consistency of -asynchronous systems, specifically distributed software -amd communication protocols. -A verification model of the system is first specified -in a guarded command language called -.IR Promela . -This specification language, described in the reference, -allows for the modeling of dynamic creation of -asynchronous processes, -nondeterministic case selection, loops, gotos, local and -global variables. +asynchronous systems, specifically distributed software, +multi-threaded systems, and communication protocols. +A model of the system is specified +in a guarded command language called Promela (process meta language). +This modeling language supports dynamic creation of +processes, nondeterministic case selection, loops, gotos, +local and global variables. It also allows for a concise specification of logical correctness requirements, including, but not restricted to requirements expressed in linear temporal logic. @@ -110,23 +30,32 @@ can perform interactive, guided, or random simulations of the system's execution. It can also generate a C program that performs an exhaustive -or approximate verification of the correctness requirements -for the system. +verification of the correctness requirements for the system. +The main options supported are as follows. (You can always get +a full list of current options with the command "spin --"). . +.TF -Exxx +.PD .TP .B -a -Generate a verifier (model checker) for the specification. -The output is written into a set of C files, named +Generate a verifier (a model checker) for the specification. +The output is written into a set of C files named .BR pan.[cbhmt] , that can be compiled .RB ( "pcc pan.c" ) to produce an executable verifier. The online .I spin -manuals (see below) contain +manuals contain the details on compilation and use of the verifiers. . .TP +.B -b +Do not execute +.I printf +statements in a simulation run. +. +.TP .B -c Produce an ASCII approximation of a message sequence chart for a random or guided (when combined with @@ -135,6 +64,15 @@ .BR -M . . .TP +.B -Dxxx +Pass +.I -Dxxx +to the preprocessor (see also +.I -E +and +.IR -I ). +. +.TP .B -d Produce symbol table information for the model specified in .IR file . @@ -148,6 +86,21 @@ name of the structure declaration that contains the variable. . .TP +.B -Exxx +Pass +.I xxx +to the preprocessor (see also +.I -D +and +.IR -I ). +. +.TP +.B -e +If the specification contains multiple never claims, or ltl properties, +compute the synchronous product of all claims and write the result +to the standard output. +. +.TP .BI -f " ltl" Translate the LTL formula .I ltl @@ -176,6 +129,9 @@ single argument to the .I spin command. +.br +This option has largely been replaced with the support +for inline specification of ltl formula, in Spin version 6.0. . .TP .BI -F " file" @@ -201,6 +157,25 @@ is meant to solve those problems.) . .TP +.B -g +In combination with option +.BR -p , +print all global variable updates in a simulation run. +. +.TP +.B -h +At the end of a simulation run, print the value of the seed +that was used for the random number generator. +By specifying the same seed with the +.B -n +option, the exact +run can be repeated later. +. +.TP +.B -I +Show the result of inlining and preprocessing. +. +.TP .B -i Perform an interactive simulation, prompting the user at every execution step that requires a nondeterministic choice @@ -208,6 +183,30 @@ when execution is deterministic. . .TP +.BI -j N +Skip printing for the first +.I N +steps in a simulation run. +. +.TP +.B -J +Reverse the evaluation order for nested unless statements, +e.g., to match the way in which Java handles exceptions. +. +.TP +.BI -k " file" +Use the file name +.I file +as the trail-file, see also +.BR -t . +. +.TP +.B -l +In combination with option +.BR -p , +include all local variable updates in the output of a simulation run. +. +.TP .B -M Produce a message sequence chart in Postscript form for a random simulation or a guided simulation @@ -237,60 +236,56 @@ .IR N . . .TP -.B -t -Perform a guided simulation, following the error trail that -was produces by an earlier verification run, see the online manuals -for the details on verification. +.BI -N " file" +Use the never claim stored in +.I file +to generate the verified (see +.BR -a ). . .TP -.B -V -Prints the -.I spin -version number and exits. -. -.PP -With only a filename as an argument and no options, -.I spin -performs a random simulation of the model specified in -the file (standard input is the default if the filename is omitted). -If option -.B -i -is added, the simulation is -.IR interactive , -or if option -.B -t -is added, the simulation is -.IR guided . -.PP -The simulation normally does not generate output, except what is generated -explicitly by the user within the model with -.I printf -statements, and some details about the final state that is -reached after the simulation completes. -The group of options -.B -bglmprsv -sets the desired level of information that the user wants -about a random, guided, or interactive simulation run. -Every line of output normally contains a reference to the source -line in the specification that generated it. +.BI -O +Use the original scope rules from pre-Spin version 6. . .TP -.B -b -Suppress the execution of -.I printf -statements within the model. +.BI -o [123] +Turn off data-flow optimization ( +.IR -o1 ). +Do not hide write-only variables ( +.I -o2 +) during verification. +Turn off statement merging ( +.I -o3 +) during verification. +Turn on rendezvous optimization ( +.I -o4 +) during verification. +Turn on case caching ( +.I -o5 +) to reduce the size of pan.m, +but losing accuracy in reachability reports. +. .TP -.B -g -Show at each time step the current value of global variables. +.BI -O +Use the scope rules pre-version 6.0. In this case there are only two +possible levels of scope for all data declarations: global, or proctype local. +In version 6.0 and later there is a third level of scope: inlines or blocks. +. .TP -.B -l -In combination with option -.BR -p , -show the current value of local variables of the process. +.BI -P xxx +Use the command +.I xxx +for preprocessing instead of the standard C preprocessor. +. .TP .B -p -Show at each simulation step which process changed state, -and what source statement was executed. +Include all statement executions in the output of simulation runs. +. +.TP +.BI -q N +Suppress the output generated for channel +.B N +during simulation runs. +. .TP .B -r Show all message-receive events, giving @@ -298,34 +293,88 @@ and the corresponding the source line number. For each message parameter, show the message type and the message channel number and name. +. .TP .B -s -Show all message-send events. +Include all send operations in the output of simulation runs. +. +.TP +.B -T +Do not automatically indent the +.I printf +output of process +.I i +with +.I i +tabs. +. +.TP +.B -t[\f2N\f1] +Perform a guided simulation, following the [\f2N\f1th] error trail that +was produces by an earlier verification run, see the online manuals +for the details on verification. By default the error trail is looked for +in a file with the same basename as the model, and with extension .trail. +See also +.BR -k . +. .TP .B -v Verbose mode, add some more detail, and generate more hints and warnings about the model. +. +.TP +.B -V +Prints the +.I spin +version number and exit. +. +.PP +With only a filename as an argument and no option flags, +.I spin +performs a random simulation of the model specified in +the file. +This normally does not generate output, except what is generated +explicitly by the user within the model with +.I printf +statements, and some details about the final state that is +reached after the simulation completes. +The group of options +.B -bgilmprstv +is used to set the desired level of information that the user wants +about a random, guided, or interactive simulation run. +Every line of output normally contains a reference to the source +line in the specification that generated it. +If option +.B -i +is included, the simulation i +.IR interactive , +or if option +.B -t +or +.BI -k file +is added, the simulation is +.IR guided . +. .SH SOURCE .B /sys/src/cmd/spin .SH SEE ALSO .in +4 .ti -4 -.BR http://spinroot.com : -.BR GettingStarted.pdf , -.BR Roadmap.pdf , -.BR Manual.pdf , -.BR WhatsNew.pdf , -.B Exercises.pdf +.B http://spinroot.com/spin/Man/ .br .in -4 G.J. Holzmann, -.IR "Design and Validation of Computer Protocols" , -Prentice Hall, 1991. +.IR "The Spin Model Checker (Primer and Reference Manual)" , +Addison-Wesley, Reading, Mass., 2004. +.br +—, `The model checker Spin,' +.IR "IEEE Trans. on SE" , +Vol, 23, No. 5, May 1997. .br —, `Design and validation of protocols: a tutorial,' .IR "Computer Networks and ISDN Systems" , Vol. 25, No. 9, 1993, pp. 981-1017. .br -—, `The model checker Spin,' -.IR "IEEE Trans. on SE" , -Vol, 23, No. 5, May 1997. +—, +.IR "Design and Validation of Computer Protocols" , +Prentice Hall, Englewood Cliffs, NJ, 1991. diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/tarsplit --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sys/man/1/tarsplit Tue Mar 06 23:32:10 2012 +0100 @@ -0,0 +1,85 @@ +.TH TARSPLIT 1 +.SH NAME +tarsplit, tarcat \- split a tar archive into archives under some size, or combine archives +.SH SYNOPSIS +.B tarsplit +[ +.B -p +.I prefix +] [ +.B -s +.I size +] [ +.I file +\&... +] +.PP +.B tarcat +[ +.I file +\&... +] +.SH DESCRIPTION +.I Tarsplit +copies a +.IR tar (1) +archive from input +.IR file (s) +into a series of independent +.I tar +archives with names starting with +.I prefix +.RL ( ts.\& +by default) +and no larger than a fixed +.I size +(512MB by default). +This can be useful when copying large archives onto +fixed-size storage media such as CDs or DVDs. +.PP +.I Tarsplit +prints a list on standard output +of the resulting archive names, and the first and last member names in each, +to assist finding particular members without recombining the archives. +.PP +.I Tarcat +copies +.IR tar (1) +archives from input +.IR file s +and combines them into a single +.I tar +archive. +It is the inverse of +.IR tarsplit . +.SH EXAMPLES +Archive +.B /adm +and split the result. +.IP +.EX +; tar c /adm | tarsplit -s 409600 +ts.00000: /adm/ ... /adm/brickdb/have/timeout/viaduct60 +ts.00001: /adm/brickdb/have/tls-log ... /adm/timezone/Australia_ACT +ts.00002: /adm/timezone/Australia_Broken-Hill ... /adm/words +; file ts.* +ts.00000: posix tar archive +ts.00001: posix tar archive +ts.00002: posix tar archive +.EE +.PP +Reassemble the original archive and check the tail end for completeness: +.IP +.EX +; tarcat ts.* | tar t | tail -2 +\&./adm/whois +\&./adm/words +.EE +.SH FILES +.I prefixNNNNN +output archives +.SH SOURCE +.B /sys/src/cmd/tarsplit +.SH SEE ALSO +.IR bsplit (1), +.IR split (1) diff -r 973230ca515f -r dbb1bddf6759 sys/man/1/tinyurl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sys/man/1/tinyurl Tue Mar 06 23:32:10 2012 +0100 @@ -0,0 +1,23 @@ +.TH TINYURL 1 +.SH NAME +tinyurl \- shrink a URL +.SH SYNOPSIS +.B tinyurl +.I URL +\&... +.SH DESCRIPTION +.I Tinyurl +emits a short URL +(Uniform Resource Locator) for each +.I URL +provided, +using +.BR tinyurl.com . +.SH SOURCE +.B /rc/bin/tinyurl +.SH SEE ALSO +.IR hget (1) +.SH BUGS +It's slow. +.PP +Redesigns of the source website can break this program. diff -r 973230ca515f -r dbb1bddf6759 sys/man/2/string --- a/sys/man/2/string Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/2/string Tue Mar 06 23:32:10 2012 +0100 @@ -1,6 +1,6 @@ .TH STRING 2 .SH NAME -s_alloc, s_append, s_array, s_copy, s_error, s_free, s_incref, s_memappend, s_nappend, s_new, s_newalloc, s_parse, s_reset, s_restart, s_terminate, s_tolower, s_putc, s_unique, s_grow, s_read, s_read_line, s_getline \- extensible strings +s_alloc, s_append, s_array, s_copy, s_error, s_free, s_incref, s_memappend, s_nappend, s_new, s_newalloc, s_parse, s_reset, s_restart, s_terminate, s_tolower, s_putc, s_unique, s_grow, s_read, s_read_line, s_getline, s_allocinstack, s_freeinstack, s_rdinstack \- extensible strings .SH SYNOPSIS .B #include .br @@ -71,6 +71,15 @@ .br .B char* s_getline(Biobuf *b, String *s) +.br +.B +Sinstack* s_allocinstack(char *file) +.br +.B +void s_freeinstack(Sinstack *stack) +.br +.B +char* s_rdinstack(Sinstack *stack, String *to) .SH DESCRIPTION .PP These routines manipulate extensible strings. @@ -213,23 +222,53 @@ into a string. The string is grown as necessary. An eof or error terminates the read. The number of bytes read is returned. -The string is null terminated. +The string is +.SM ASCII +.SM NUL +terminated. .PP .I S_read_line reads up to and including the next newline and returns a pointer to the beginning of the bytes read. -An eof or error terminates the read. -The string is null terminated. +An eof or error terminates the read and returns 0. +The string is +.SM NUL +terminated. .PP .I S_getline reads up to the next newline and returns -a pointer to the beginning of the bytes read. Leading +a pointer to the beginning of the bytes read +(0 on eof or error). +Leading spaces and tabs and the trailing newline are all discarded. .I S_getline +will discard all lines beginning with +.LR # . +.PP +.I S_rdinstack will recursively read through files included with -.B #include +.L #include and discard all other lines beginning with -.BR # . +.LR # . +The next line read from a +.I stack +of include files is appended to +.IR to . +.I S_rdinstack +returns a pointer to the beginning of the bytes read. +An eof or error terminates the read and returns 0. +The string is +.SM NUL +terminated. +.I S_allocinstack +opens +.I file +for reading and returns a pointer to a new stack of include files, or +.B nil +on failure. +.I S_freeinstack +frees such a +.IR stack . .SH SOURCE .B /sys/src/libString .SH SEE ALSO diff -r 973230ca515f -r dbb1bddf6759 sys/man/3/floppy --- a/sys/man/3/floppy Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/3/floppy Tue Mar 06 23:32:10 2012 +0100 @@ -1,6 +1,6 @@ .TH FLOPPY 3 .SH NAME -floppy \- floppy disk interface +floppy \- floppy diskette interface .SH SYNOPSIS .nf .B bind -a #f /dev @@ -15,9 +15,8 @@ .B /dev/fd3ctl .fi .SH DESCRIPTION -.PP -The floppy disk interface serves a one-level directory giving access to up -to four floppy disk drives. +The floppy diskette interface serves a one-level directory giving access to up +to four floppy diskette drives. Each drive is represented by a data and control file. There are no partitions. .PP @@ -36,7 +35,7 @@ Format the floppy. The .I type sets the density and -type of disk to be formatted; see +type of diskette to be formatted; see .B format in .IR prep (8). @@ -44,11 +43,13 @@ .PP A read of the .B ctl -file returns a string describing the form factor of the disk, one of +file returns a string describing the form factor of the diskette, one of .BR 3½DD , .BR 3½HD , .BR 5¼DD , or .BR 5¼HD . .SH SOURCE -.B /sys/src/9/*/devfloppy.c +.B /sys/src/9/pc/devfloppy.c +.SH BUGS +Floppies are tiny, unreliable and eventually wear out. diff -r 973230ca515f -r dbb1bddf6759 sys/man/3/sdahci --- a/sys/man/3/sdahci Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/3/sdahci Tue Mar 06 23:32:10 2012 +0100 @@ -19,7 +19,7 @@ .IR sd (3) interface. The AHCI programming interface supports up to 32 -hot-swappable ATAPI or hard disk-like devices per controller. +hot-swappable ATAPI or disk-like devices per controller. The legacy IDE interface provided by .B sdata.c supports up to four drives which are not hot-swappable. @@ -151,8 +151,7 @@ .SH SOURCE .B /sys/src/9/pc/sdiahci.c .SH SEE ALSO -.IR sd (3), -.IR 9load (8) +.IR sd (3) .br .BR http://download.intel.com/technology/serialata/pdf/rev1_2.pdf . .SH BUGS diff -r 973230ca515f -r dbb1bddf6759 sys/man/3/sdaoe --- a/sys/man/3/sdaoe Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/3/sdaoe Tue Mar 06 23:32:10 2012 +0100 @@ -76,7 +76,6 @@ .\" .IR vblade (1), .IR aoe (3), .IR sd (3), -.IR 9load (8), .\" .IR cec (8), .IR snoopy (8) .SH BUGS diff -r 973230ca515f -r dbb1bddf6759 sys/man/3/tls --- a/sys/man/3/tls Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/3/tls Tue Mar 06 23:32:10 2012 +0100 @@ -161,12 +161,13 @@ .BR "'close notify'" , .BR "'no renegotiation'" , and -.BR "'handshake canceled by user'" . +.B "'handshake canceled by user'" +(sic). Receipt of one of these alerts cause the next read on .I hand to terminate with an error. If the alert is -.BR "'close notify'", +.BR "'close notify'" , all future reads will terminate with a .B "tls hungup" error. @@ -258,9 +259,11 @@ .BR clear , meaning no encryption or digesting. Currently implemented encryption algorithms are -.B 'rc4_128' +.BR 'rc4_128' , +.BR '3des_ede_cbc' , +.B 'aes_128_cbc' and -.BR '3des_ede_cbc' . +.BR 'aes_256_cbc' . Currently implemented hashing algorithms are .B 'md5' and diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/9load --- a/sys/man/8/9load Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/9load Tue Mar 06 23:32:10 2012 +0100 @@ -14,7 +14,11 @@ .I ld are programs that reside in a FAT file system and bootstrap Plan 9. .I 9load -loads the kernel, but it cannot be run from DOS; use +loads a +.B 386 +.\" or +.\" .B amd64 +kernel, but it cannot be run from DOS; use .I ld to bootstrap (by starting .IR 9load ) @@ -26,7 +30,7 @@ is a version of .I 9load that can be booted using the PXE download (BOOTP/DHCP followed by TFTP) -found in some ethernet card BIOSes. +found in any reasonable ethernet card's BIOS. .I 9loadusb is a version that will use only the BIOS's device drivers, and thus can load from USB devices. @@ -38,7 +42,11 @@ .I 9loadask is a version that asks on the console (too early for serial ports, alas) if you want to use BIOS drivers to boot. -There are three bootstrap sequences: +There are four bootstrap sequences: +.IP \- 3 +PXE BIOS, +.IR 9pxeload , +kernel .IP \- BIOS, MBR, disk partition PBS, .IR 9load , @@ -71,11 +79,11 @@ and then only if the machine's BIOS supports linear block addressing (LBA) mode for disk transfers. .PP -When booting from floppy or hard disk, the BIOS loads the +When booting from disk or floppy, the BIOS loads the first sector of the medium at location .BR 0x7C00 . +In the case of a disk, it is the master boot record (MBR). In the case of a floppy, this is the PBS. -In the case of a hard disk, it is the master boot record (MBR). The MBR copies itself to address .BR 0x600 , finds the active partition and loads its PBS at address @@ -97,7 +105,7 @@ and (modulo the large disk constraints just described) non-Plan 9 MBRs are suitable for booting Plan 9. .PP -Thus the default sequence is: BIOS, MBR, PBS, +Thus the default sequence when booting from disk is: BIOS, MBR, PBS, .IR 9load , kernel. .PP @@ -137,21 +145,25 @@ .PP In summary, Plan 9 can be booted on a PC three different ways: -either by booting MS-DOS and using -.I ld -to start -.I 9load -in the appropriate directory, -by booting directly from a Plan 9 boot floppy or disk -partition +either +by using a PXE-capable BIOS to boot +.I 9pxeload +directly over the ethernet, +by booting directly from a Plan 9 disk partition +or boot floppy prepared using .B format to install the appropriate files and bootstrap sectors (see .IR prep (8)), -or by using a PXE-capable BIOS to boot -.I 9pxeload -directly over the ethernet. +or rarely +by booting MS-DOS and using +.I ld +to start +.I 9load +in the appropriate directory. +.br +.ne 4 .SS Bootfile The .IR bootfile , @@ -193,23 +205,6 @@ .TF \fLethern .PD .TP -.BI fd n -An MS-DOS floppy disk. -.I N -specifies the floppy drive, either -0 or 1. -The -.I bootfile -is the contents of the MS-DOS -.IR file . -There is no default file. -For compatibility with hard disks, a -.I partition -may be given, but only -.B dos -is recognized: -.BI fd0!dos! file\f1. -.TP .BI ether n Ethernet. .I N @@ -226,7 +221,7 @@ entry for this PC. .TP .BI sd Cn -Non-floppy disk. +Normal disk. The device name format is described in .IR sd (3). A @@ -242,6 +237,23 @@ .BR 9fat . There is no default partition or pathname. .TP +.BI fd n +An MS-DOS floppy disk. +.I N +specifies the floppy drive, either +0 or 1. +The +.I bootfile +is the contents of the MS-DOS +.IR file . +There is no default file. +For compatibility with normal disks, a +.I partition +may be given, but only +.B dos +is recognized: +.BI fd0!dos! file\f1. +.TP .B bios0 (Not in .IR 9pxeload .) @@ -252,10 +264,12 @@ using the BIOS INT 13 calls also used by .IR pbslba . It does not understand any form of partition table; -see the EXAMPLES in +see the +.B EXAMPLES +in .IR prep (8) for how to format such a device. -This is mostly useful for booting from USB devices so far. +This has been mostly useful for booting from USB devices so far. .TP .B sdB0 (Not in @@ -290,11 +304,11 @@ e.g. most PCI ethernet adapters, will be recognised. If the file -.BI /cfg/pxe/ XXXXXXXXXXXX +.BI /cfg/pxe/ ether can be located via a DHCP server, where -.I XXXXXXXXXXXX -is the MAC address of a recognised ethernet adapter, +.I ether +is the lower-case MAC address of a recognised ethernet adapter, the contents are obtained and used as a .IR plan9.ini . .PP diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/auth --- a/sys/man/8/auth Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/auth Tue Mar 06 23:32:10 2012 +0100 @@ -79,7 +79,7 @@ .I user in an authentication database. It does not install a user on a Plan 9 file server; see -.IR fs (8) +.IR fossilcons (8) for that. .PP Option diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/booting --- a/sys/man/8/booting Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/booting Tue Mar 06 23:32:10 2012 +0100 @@ -24,9 +24,9 @@ other methods of rebooting are mentioned for some machines. .SS PCs To boot a PC, it is necessary to get +.B /386/9boot +or .B /386/9load -or -.B /386/9pxeload loaded into memory. There are many ways to do this. A Plan 9 boot floppy prepared by .B format @@ -36,16 +36,22 @@ .B 9load when the PC is reset or powered on. Other methods are described in -.IR 9load (8). -.B 9load +.IR 9boot (8). +.I 9boot +or +.I 9load then locates and loads a Plan 9 kernel, using configuration information -from the file +from the matching file in +.B /cfg/pxe +.RI ( 9boot ) +or the file .B plan9.ini stored in the .B 9fat -configuration partition or on a DOS file system. +configuration partition or on a DOS file system +.RI ( 9load ). See -.IR 9load (8) +.IR 9boot (8) for details. .PP Once the kernel is booted, it behaves like the others. @@ -149,13 +155,21 @@ .L bootf parameters) are +.TF /arm/9beagl +.TP .L /arm/9gd -for the Marvell PXA168-based Guruplug Display, +for the Marvell PXA168-based Guruplug Display +.TP .L /arm/9plug -for all Marvell Kirkwood plugs (Sheevaplug, Guruplug, Dreamplug, Openrd, etc.), -and +for other Marvell Kirkwoods (Sheevaplug, Guruplug, Dreamplug, Openrd, etc.) +.TP .L /arm/9beagle -for TI OMAP3 boards (IGEPv2 from ISEE, Gumstix Overo). +for TI OMAP3 boards (IGEPv2 from ISEE, Gumstix Overo) +.TP +.L /arm/9ts +for Trimslice systems, which contain the Nvidia Tegra 2 +.PD +.LP In the following, replace .I MAC @@ -247,15 +261,26 @@ \&'bootp 0x80310000; bootp 0x80300000 /cfg/pxe/\fIMAC\fP; go 0x80310000' .EE .PP +For Trimslice systems, +type this as one line after +.LR "setenv bootcmd" : +.IP +.EX +\&'dhcp; dhcp; tftpboot 0x410000; + tftpboot 0x400000 /cfg/pxe/\fIMAC\fP; go 0x410000' +.EE +.PP Thereafter, the boards will automatically boot via BOOTP and TFTP when reset. . .SH "SEE ALSO" .IR ndb (6), -.IR 9load (8), +.IR 9boot (8), .IR boot (8), .IR init (8), .IR plan9.ini (8) .SH SOURCE Sources for the various boot programs are under -.BR /sys/src/boot . +.B /sys/src/boot +and +.BR /sys/src/9/pcboot . diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/dhcpd --- a/sys/man/8/dhcpd Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/dhcpd Tue Mar 06 23:32:10 2012 +0100 @@ -250,6 +250,17 @@ It runs as user .B none and can only access files with global read permission. +.L %C +in a file name is replaced with the name of the +booting system's +.L /cfg/pxe +file. +Similarly, +.L %E +becomes the booting system's Ethernet MAC address +and +.L %I +becomes its IP address. The options are: .TP .B d @@ -295,5 +306,5 @@ .B /sys/src/cmd/ip .SH "SEE ALSO" .IR ndb (6), -.IR 9load (8), +.IR 9boot (8), .IR booting (8) diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/mkfs --- a/sys/man/8/mkfs Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/mkfs Tue Mar 06 23:32:10 2012 +0100 @@ -180,6 +180,18 @@ mount -c /srv/newfs /n/newfs disk/mkext -u -d /n/newfs < arch .EE +.PP +Copy a subtree, +.IR from-dir , +to another, +.IR to-dir , +with greater fidelity than +.IR dircp : +.IP +.EX +disk/mkfs -a -s from-dir /sys/lib/sysconfig/proto/allproto | + disk/mkext -ud to-dir +.EE .SH SOURCE .B /sys/src/cmd/disk/mkfs.c .br diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/mkusbboot --- a/sys/man/8/mkusbboot Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/mkusbboot Tue Mar 06 23:32:10 2012 +0100 @@ -1,9 +1,12 @@ .TH MKUSBBOOT 8 .SH NAME -mkusbboot - generate bootable USB disk image +mkusbboot - generate bootable USB or other disk image for PC .SH SYNOPSIS .B mkusbboot [ +.B -b +.I boot +] [ .B -p .I proto ] [ @@ -30,6 +33,10 @@ .I proto and files in .BR /sys/lib/sysconfig/usb . +The default +.I boot +program is +.BR /386/9loadusb . .PP The image will be exactly .IB size *1,000,000 @@ -51,7 +58,7 @@ (with optional VGA) or .B amd64 -machines, when copied to a USB disk. +machines, when copied to a (possibly USB) disk. There is an .I nvram partition, initially zeroed. @@ -62,6 +69,13 @@ mkusbboot pump /dev/sdU0.0/data .EE +.PP +Create a bootable disk from the local Plan 9 installation. +.IP +.EX +mkusbboot -b /386/9load +pump /dev/sdC0/data +.EE .SH FILES .TF /srv/fscons.open .TP @@ -79,7 +93,7 @@ .I proto .TP .B /env/objtype -architecture of the boot programs in the disk image +architecture of the default kernel in the disk image .TP .B /tmp/9load .PD 0 @@ -97,6 +111,7 @@ .SH SEE ALSO .IR usb (4), .IR boot (8), +.IR 9boot (8), .IR diskparts (8), .IR loadfossil (8), .IR partfs (8), diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/ndb --- a/sys/man/8/ndb Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/ndb Tue Mar 06 23:32:10 2012 +0100 @@ -169,6 +169,12 @@ packet to a nameserver to associate the host's IPv4 address with its DNS name. This is required if the domain's nameserver is a Microsoft Windows Active Directory controller. +The host's domain name will be sent to the AD controller unless +a tuple of the form +.BI inform= xxx +is found in the host's +.I ndb +entry. .SS "Database maintenance" .I Ndb/mkhash creates a hash file for all entries with attribute diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/plan9.ini --- a/sys/man/8/plan9.ini Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/plan9.ini Tue Mar 06 23:32:10 2012 +0100 @@ -17,6 +17,16 @@ .EE .LP each of which defines a kernel or device parameter. +If +.I 9load +or +.I 9pxeload +loads the kernel over the network instead, +this file will be named +.BI /cfg/pxe/ hex-digits +(see +.IR 9load (8)) +on the local TFTP server. .PP Blank lines and Carriage Returns diff -r 973230ca515f -r dbb1bddf6759 sys/man/8/prep --- a/sys/man/8/prep Tue Mar 06 23:31:21 2012 +0100 +++ b/sys/man/8/prep Tue Mar 06 23:32:10 2012 +0100 @@ -65,7 +65,7 @@ ] .I disk .SH DESCRIPTION -A partition table is stored on a hard disk to specify the division of +A partition table is stored on a non-floppy disk to specify the division of the physical disk into a set of logical units. On PCs, the partition table is stored at the end of the master boot record of the disk. @@ -480,12 +480,12 @@ .PD .PP .I Format -prepares for use the floppy diskette or hard disk partition in the file named +prepares for use the disk partition or the floppy diskette in the file named .IR disk , for example -.B /dev/fd0disk +.B /dev/sdC0/9fat or -.BR /dev/sdC0/9fat . +.BR /dev/fd0disk . The options are: .TP .B -f @@ -654,8 +654,8 @@ program such as .IR 9load (8), which then loads the operating system. -If MS-DOS or Windows 9[58] is already installed -on your hard disk, the master boot record +If MS-DOS or Windows is already installed +on your disk, the master boot record already has a suitable boot block. Otherwise, .B /386/mbr @@ -698,7 +698,7 @@ /386/9load /tmp/plan9.ini /386/9pcf.gz .EE .PP -Initialize the blank hard disk +Initialize the blank disk .BR /dev/sdC0/data . .IP .EX