home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaDemoCD2.iso / ASCII / TEXTE / SCENE / FAQ-LISTS / cfaq_2.txt < prev    next >
Encoding:
Text File  |  1995-01-03  |  20.8 KB  |  444 lines

  1. _______________          _____      _____   _________       ___________________
  2. \.            /________ |.   /_____:o    | /.        \/|___/_       \         /
  3.  \___   _____/|.   /   \||  /|.    |:    |//   ______/·|.   / ______ \    ___/
  4.    /.   /_/·  ||  /     \:  \||    |·    |/   /   \ \/ ||  /_______ \/+    /
  5.   //  ____/   ||  \   \  \   \:   ¯¯¯    |   /    / /  ||  \ /·\  /  \  __/_
  6.  //   / //    |+   \   \      \  \___/   |   \___/ /   |·   \/  \/   /      /
  7. /·   /  \\         /    \     /    |:    |        /         /       /      /
  8. \___/    \________/_____|\___/:    |_____|_______/\________/_______/______/
  9.                              l_____|·MBB·
  10.  
  11.  
  12. _ ___                  \ _
  13.   ___|__________/\______\//\________________________________________________ _
  14.   \___   /  ___/  \_____\//\______________      /\   ______/  _______/  ___ _
  15.      | _/   \ _    \_   \/     |   ___)_/_  ___/_/_  ___)_\______   \______
  16.      | \     \/     /   ||     |   \      | \      | \          /    /    /
  17.  _ __|  \__________/____||     |____      |__      |__         _____/    ___ _
  18.      `----'              `-----'   `------' `------' `---------'  `------'
  19.                                                                          
  20.                               [hOMELESS÷bBS!]
  21.  
  22.     [bIRDHOUSE^pROJECTS eUROPEAN hQ][mYTH! gERMAN hQ][aRT-cORE! fUN hQ]
  23.  
  24.             [sYSdOODE: -sLIME!^bIRDHOUSE÷pROJECTS-lEADER^mYTH!]
  25.                [cOdOODES: mOGUe!/sCX^aC! pRIMUS!/bP!-lEADER]
  26.                      [MR.VAiN/bNZ^aC! wHIRLWIND/mYTH!]
  27.  
  28.             [uPLOADER:GeNeRaTioN      ][oF:[+] PRODIGY '95 [+]]
  29.                [uPLOAD tIME:13:52:18][uPLOAD dATE:03-Jan-95]
  30.  
  31. _ ___                  \ _
  32.   ___|__________/\______\//\________________________________________________ _
  33.   \___   /  ___/  \_____\//\______________      /\   ______/  _______/  ___ _
  34.      | _/   \ _    \_   \/     |   ___)_/_  ___/_/_  ___)_\______   \______
  35.      | \     \/     /   ||     |   \      | \      | \          /    /    /
  36.  _ __|  \__________/____||     |____      |__      |__         _____/    ___ _
  37.      `----'              `-----'   `------' `------' `---------'  `------'
  38.  
  39.  
  40.  
  41.  
  42.   «------------------[ eLITE gUYS wILL gET iNVITED hERE ]------------------»
  43.         .         .        .            .    :   ·    .
  44.    ____/¦__   ___/¦____ __/¦___________/¦__  ¦   ¦___/¦__         !
  45.    _ ____  \__\____  _//  _____\_________  \ |   | ____  \__     _:/\__
  46.     /·  |____//·  |   \\_____ ·\|   |   |  \\|   |/·  |____/     \ Oo /
  47.    //   |    \    |    \   l   \\   |   |   ·\_  //   |    \     /_--_\
  48.    \__________\________/________/___j___j     /  \__________\     :\/
  49.    -------------------------------------l____/   :-----------     ¡
  50.                                              ·   ·
  51.                     .     :   ·    .           .         .        .
  52.     !        _ ____/¦__   ¦   ¦____¦\____ ____/¦__   ___/¦____ __/¦_____ __
  53.    _:/\__    _ _ ____  \__|   |______   \ _ ____  \__\_  |  _//  _____ __ _
  54.    \ Oo /       /·  |____/|   |/· __  __/  /·  |____//·  |   \\_____ ·\
  55.    /_--_\      //   |    \|   //   |    \_//   |    \    l    \   l   \\
  56.     :\/        \__________\   \____j     /\__________\________/________/
  57.     ¡          -----------·   :----l____/-------------------------------
  58.                           ·   ·
  59.      <*> pRODIGY gHQ <*> nEUTRON wHQ <*> iLLUSION eHQ <*> dYNAMIX gHQ <*>
  60.  
  61.               Upload Date: [01-03-95] «» Upload Time: [07:18:07]
  62.  
  63.   «-------------------[ aSK eLITE fOR SYS-PW & NUMBA ! ]-------------------»
  64.  
  65.                     .__ _                                            r      
  66.                     :   __tHIS fILE wAS D/L fROM                     I      
  67.                  _ _02-Jan-95_________________________:              N      
  68.                    _|   \/                            |              G      
  69.                    \/       T¾R¾S¾I LEADER H¾Q     \\ ²  tRISTAR & rED      
  70.                     ­                               \ ­          sECTOR     
  71.     ö   .           |_/\________/\__.___   _/\_______ |              W      
  72.      /\             |\    ._    \   ­   \  \     ____)²             iNC.    
  73.    . \/\------------|/    |/____/        \ /     __)__!---------------.     
  74.      |\/            /     ²   /     |     \           \   4nODEZ      |     
  75.      |              \_____|   \_____²_____/___________/               !_    
  76.      |ö             |                                 |              /_/\   
  77.      |  _/\__.___   !/\_._/\________/\________/\______!  _/\______   \_\/   
  78.      |  \    ­   \  \___!\    ._    \   ._    \    ____) \    .   \   |     
  79.      00:12:35     \ /   |/    |/    /   |/    /    __)__ /    |    \_/¹     
  80.        /     |     \    |     /    /    /    /          \     |     \       
  81.        \_____²_____/____²_________/_________/___________/_____²_____/ö2Fö   
  82.                     ²                                 ²                     
  83.                    _!/\__                             |__                   
  84.                    \ Oo /   +49  p¾R¾I¾V¾A¾T¾E¾!   ___| /                   
  85.    eLITE gUYS      /_--_\                          \  //                    
  86.     wILL gET        ²\/      tHE hOLY mASTER iS     \/|                     
  87.   iNVITED hERE      !              mClOUD             ²                     
  88.                     ²  aND hIS hELPING hAND iS mARIO  :                     
  89.                     :                                                       
  90.                     ¾   aSK fOR nUMBER aND sYSPW/nUP
  91.  
  92.  
  93. @BEGIN_FILE_ID.DIZFREQUENTLY ASKED QUESTIONS ABOUT `C`
  94. -German Edition-
  95. 2-10
  96. @END_FILE_ID.DIZ
  97. /Teil 2 von 10/
  98.  
  99.           Q1.6  Was ist 'Alignment'?
  100.  
  101.  
  102.           Alignment, zu deutsch "Ausrichtung", ist ein Zugeständnis von C
  103.           an die Eigenheiten  mancher  Prozessoren, die nicht in der Lage
  104.           sind, alle Daten an  allen  Adressen  des  Speichers abzulegen.
  105.           Betrachten wir die Struktur:
  106.  
  107.                struct {
  108.                     int  i1;
  109.                     char c;
  110.                     int  i2;
  111.                } s;
  112.  
  113.           Gehen wir davon aus, daß ein  int  16  Bits und ein char 8 Bits
  114.           groß ist und daß wir es mit einem Rechner  mit  linearem  Spei-
  115.           cheraufbau zu tun haben (siehe  auch Q6.1.1). Sagen wir, s soll
  116.           am Adresse 10 im  Speicher  abgelegt  werden. Das bedeutet, daß
  117.           s.i1  an  Adresse  10  liegt  (ANSI  verlangt,  daß  die  erste
  118.           Komponente einer Struktur immer an derselben Adresse  liegt wie
  119.           die  Struktur  selber),  also  die  Speicherzellen  10  und  11
  120.           einnimmt. Danach kommt s.c (weil die Reihenfolge  der Struktur-
  121.           definition beibehalten werden muß)  an  Adresse  12 und s.i2 an
  122.           Adresse 13  (belegt  also  Speicherzellen  13  und  14). Soweit
  123.           sogut... aber leider  gibt  es Prozessoren, auf denen das nicht
  124.           so einfach geht. Der MC68000 z.B. ist nicht in  der  Lage,  auf
  125.           ints an ungeraden Adressen zuzugreifen; der  Versuch  führt zur
  126.           Auslösung eines "Traps" (was  für  das  C-Programm  den Absturz
  127.           oder das Eintreffen eines Signals bedeuten dürfte). Andere Pro-
  128.           zessoren  brauchen  für  int-Zugriffe  an   ungeraden  Adressen
  129.           wesentlich länger als für solche an geraden Adressen. In obigem
  130.           Beispiel würde aber s.i2 an einer ungeraden Adresse abgelegt.
  131.  
  132.           Aus diesem Grund ist es  dem Compiler erlaubt, Füllbytes in der
  133.           Struktur einzufügen. Er würde also  s.i2 statt an Adresse 13 an
  134.           Adresse 14 ablegen und Adresse 13 unbenutzt lassen. Dieses Ein-
  135.           fügen von Füllbytes bezeichnet man als Alignment.
  136.  
  137.           Die Tatsache, daß  es  dem  Compiler  freisteht,  innerhalb von
  138.           Strukturen an (fast) beliebiger Stelle unbenutzte Löcher einzu-
  139.           fügen, hat einige Konsequenzen:
  140.  
  141.               -  Da die Werte der Füllbytes nicht vorhersehbar  sind, ist
  142.                  es nur selten möglich,  Strukturen  als  ganzes  zu ver-
  143.                  gleichen. Das ist einer der Gründe, warum man Strukturen
  144.                  zwar mit "=" zuweisen, aber nicht  mit  "==" vergleichen
  145.                  kann. Das bedeutet auch, daß bei:
  146.                                      Begriffe                           7
  147.           ---------------------------------------------------------------
  148.  
  149.  
  150.                       struct {
  151.                            char c;
  152.                            int i;
  153.                       } s,t;
  154.                       s.c = t.c = 'A';
  155.                       s.i = t.i = 123;
  156.  
  157.                  ein memcmp(&s, &t,  sizeof(s)) nicht unbedingt 0 liefern
  158.                  muß.
  159.  
  160.               -  Die mit sizeof ermittelte Größe einer Struktur muß nicht
  161.                  mit der Summe der Größen der Komponenten übereinstimmen.
  162.                  Bei o.a. Struktur ergibt sich  rechnerisch  die  Größe 5
  163.                  Bytes  (2 ints zu je 2 Bytes plus  ein  char  von  einem
  164.                  Byte), aber wenn, wie beschrieben, nach  c  ein Füllbyte
  165.                  eingefügt wird, ist die mit sizeof ermittelte  Größe der
  166.                  Struktur 6 Bytes. Es  kann  durchaus  vorkommen,  daß am
  167.                  Ende  gefüllt  wird,  damit  Arrays der Struktur korrekt
  168.                  ausgerichtet sind, daß also bei
  169.  
  170.                       struct s {
  171.                            char c;
  172.                       }
  173.  
  174.                  sizeof(struct s) nicht 1, sondern 2 oder 4 ergibt.
  175.  
  176.               -  Bei manchen Rechnern sind Zugriffe auf ungerade Adressen
  177.                  möglich,  aber  langsam.  Bei  anderen Rechnern sind Zu-
  178.                  griffe auf Adressen, die ein Vielfaches von 4 sind, noch
  179.                  schneller.  Wenn  der  Compiler alle Strukturkomponenten
  180.                  auf 4-Byte-Adressen ausrichten würde, ließe sich dadurch
  181.                  der Zugriff beschleunigen, allerdings würde dadurch viel
  182.                  Platz   verschenkt.   Solche   Compiler  überlassen  die
  183.                  Entscheidung, ob  platz-  oder geschwindigkeitsoptimiert
  184.                  ausgerichtet werden soll, häufig dem Programmierer (z.B.
  185.                  über Kommandozeilen-Option oder #pragma).           (wr)
  186.  
  187.               -  Direktes  Schreiben  oder  Lesen  von Strukturen u.ä. in
  188.                  oder aus Dateien, z.B. mittels
  189.  
  190.                       struct s {
  191.                            char c;
  192.                            int i;
  193.                       } a = { 'A', 4711 };
  194.                       fwrite(&a, sizeof(a), 1, fp);
  195.  
  196.                  ist höchst unportabel,  da schon aufgrund des Alignments
  197.                  niemand so  genau garantieren kann, wie denn nun die ge-
  198.                  schriebenen/gelesenen Daten wirklich aussehen.      (tw)
  199.  
  200.  
  201.           Q1.7  Was ist ein Sequence-Point?
  202.  
  203.  
  204.           Ein Sequence-Point ist ein imaginärer Punkt im Programm, an dem
  205.           garantiert wird, daß alles, was davor  steht,  vollständig aus-
  206.           gewertet wurde,  bevor  das,  was  dahinter  steht,  in Angriff
  207.           genommen  wird.  "Ausgewertet"  bedeutet  dabei, daß alle Rech-
  208.           8                           Begriffe
  209.           ---------------------------------------------------------------
  210.  
  211.  
  212.           nungen abgeschlossen, alle Funktionen aufgerufen,  alle Seiten-
  213.           effekte durchgeführt sind  usw. Sequence-Points - und nur sie -
  214.           erzwingen  eine  Links-nach-Rechts-Auswertung, legen  also  die
  215.           Auswertungsreihenfolge fest.
  216.  
  217.           Sequence-Points stehen:
  218.  
  219.               -  hinter jedem Statement, d.h. beim ';'
  220.  
  221.               -  zwischen  Auswertung der Argumente und dem Aufruf  einer
  222.                  Funktion
  223.  
  224.               -  am Komma-Operator
  225.  
  226.               -  am ? des Fallunterscheidungsoperators (a?b:c)
  227.  
  228.               -  bei && und ||
  229.  
  230.               -  bei der schließenden Klammer von if(), while() usw.
  231.  
  232.           Insbesondere  ist der  Zuweisungsoperator  '='  kein  Sequence-
  233.           Point.
  234.  
  235.           Zwischen  zwei  Sequence-Points  finden  alle  Auswertungen  in
  236.           undefinierter Reihenfolge statt. Der Ausdruck
  237.  
  238.                y = (y=2) + y;
  239.  
  240.           enthält nur einen Sequence-Point,  nämlich  den  am  Ende (beim
  241.           ';'),  deswegen ist die Auswertungsreihenfolge undefiniert  (es
  242.           ist also nicht festgelegt, ob  zuerst das erste oder das zweite
  243.           Argument des + ausgewertet wird) und damit der gesamte Wert des
  244.           Ausdrucks. Hingegen ist
  245.  
  246.                y = (y=2,y+y);
  247.  
  248.           definiert,  da der  Komma-Operator  einen  Sequence-Point  dar-
  249.           stellt, wodurch garantiert ist, daß  zuerst  y=2  und  dann y+y
  250.           ausgewertet wird.
  251.  
  252.           Aus demselben Grund ist
  253.  
  254.                int i = 0;
  255.                printf("%d %d %d",i++,i++,i++);
  256.  
  257.           undefiniert:  in   der   printf()-Zeile   befinden   sich  zwei
  258.           Sequence-Points, einer nach  der Auswertung aller Parameter und
  259.           vor dem Aufruf von printf(), und einer bei dem ';' am  Ende. In
  260.           welcher Reihenfolge die drei  i++  ausgewertet  und wann die ++
  261.           durchgeführt  werden, ist undefiniert. Ein Compiler könnte  zum
  262.           Beispiel:
  263.  
  264.               -  Erst dreimal den Wert von i ermitteln, die Werte auf den
  265.                  Stack legen, dann i  dreimal  inkrementieren  und danach
  266.                  printf() aufrufen.  Dadurch würde sich die Ausgabe  "0 0
  267.                  0" ergeben.
  268.                                      Begriffe                           9
  269.           ---------------------------------------------------------------
  270.  
  271.  
  272.               -  Dreimal nacheinander den Wert von i  ermitteln,  auf den
  273.                  Stack
  274.                  legen und danach jeweils i inkrementieren, das würde die
  275.                  Ausgabe  von  0,  1  und  2  in  irgendeiner Reihenfolge
  276.                  ergeben (da nicht festgelegt ist, in welcher Reihenfolge
  277.                  die     Funktionsargumente      ausgewertet     werden).
  278.                  Wahrscheinlich würde "0 1 2" oder "2 1 0" ausgegeben.
  279.  
  280.               -  Mit    einer    Fehlermeldung    "undefined   behaviour"
  281.                  terminieren.
  282.  
  283.           Wohldefiniert ist allerdings
  284.  
  285.                x = (a++ ? ++a : a++);
  286.  
  287.           da  das  ?  einen  Sequence-Point  darstellt  (desweiteren  ist
  288.           festgelegt,  daß immer genau einer der  beiden  durch  ':'  ge-
  289.           trennten Ausdrücke ausgewertet wird). Ebenso ist
  290.  
  291.                if (a++) a--;
  292.  
  293.           wohldefiniert.                                             (wr)
  294.  
  295.  
  296.           Q1.8  Was ist der Unterschied zwischen Formal- und Aktual-
  297.                 Parametern?
  298.  
  299.  
  300.           Mit Formal-Parametern bezeichnet man  die  Parameter,  die eine
  301.           Funktion  -  entsprechend  ihrer  Deklaration  -  erwartet.  So
  302.           besitzt z.B. die Funktion
  303.  
  304.                double funk(int i, double d) { return i * d; }
  305.  
  306.           genau zwei Formal-Parameter: einen Parameter mit  dem Namen 'i'
  307.           vom Typ Integer und einen mit dem Namen 'd' vom Typ Double.
  308.  
  309.           Aktual-Parameter  sind  die Parameter, die  beim  Aufruf  einer
  310.           Funktion  übergeben werden. Wird beispielsweise obige  Funktion
  311.           mit
  312.  
  313.                a = funk(2 * 10, x);
  314.  
  315.           aufgerufen, so  handelt es sich bei den Aktual-Parameter um die
  316.           Werte von '2 * 10' und 'x'.                                (tw)
  317.  
  318.  
  319.           Q1.9  Was bedeutet "undefiniert", "undefiniertes Verhalten"?
  320.  
  321.  
  322.           Undefiniert bzw. undefiniertes  Verhalten sind Begriffe, die im
  323.           ANSI-Standard definiert sind. Sie bezeichnen die Reaktion eines
  324.           C-Compilers bei gewissen Sprachkonstrukten.
  325.  
  326.           Besitzt ein Sprachkonstrukt  undefiniertes  Verhalten, bedeutet
  327.           dies nicht, daß ein  ANSI  C-Compiler  dieses  nicht übersetzen
  328.           darf (er muß auch keine  Warnung  ausgeben),  sondern,  daß das
  329.           fertige Programm ziemlicher Murks sein kann.  Ebenso  ist prak-
  330.           10                           Begriffe
  331.           ---------------------------------------------------------------
  332.  
  333.  
  334.           tisch jegliches andere Verhalten, von der Ausgabe einer Warnung
  335.           über den Abbruch  der  Compilierung bis dahin, daß kleine grüne
  336.           Krokodile aus dem Laufwerksschacht kriechen :-), zulässig.
  337.  
  338.           In Programmen Konstrukte mit  undefiniertem  Verhalten  zu ver-
  339.           wenden, ist im Normalfall keine gute Idee.                 (tw)
  340.  
  341.  
  342.           Q1.10  Was heißt "implementierungsdefiniert"?
  343.  
  344.  
  345.           Ein Verhalten, das der ANSI-Standard nicht  für  alle Implemen-
  346.           tierungen  festlegt,  das aber von  einer  Implementierung  auf
  347.           irgendeine  Weise definiert werden muß, wird als  "implementie-
  348.           rungsdefiniert" bezeichnet.  Der  Compilerbauer  muß  sich also
  349.           entscheiden, wie er  solche  Fälle  realisiert,  und  sich dann
  350.           daran  halten.  Implementierungsdefiniert  sind z.B. die Größen
  351.           der einzelnen Datentypen (z.B. ob ein int 16, 32 oder mehr Bits
  352.           groß ist) und ob  ein  char  normalerweise signed oder unsigned
  353.           ist.
  354.  
  355.           Es ist eine gute  Idee,  auf  die  Ausnutzung implementierungs-
  356.           definierter  Eigenschaften  ebenso zu verzichten,  als  ob  sie
  357.           undefiniert wären. So sollte man z.B. immer sizeof(int) schrei-
  358.           ben, wenn die Anzahl der Bytes in einem int gewünscht  ist, und
  359.           nicht 2 oder 4 oder was auch immer,  oder  explizit signed char
  360.           oder  unsigned char verwenden, wenn der Unterschied eine  Rolle
  361.           spielt.                                                    (wr)
  362.  
  363.  
  364.           Q1.11  Was bedeutet "unspezifiziert", "unspezifiziertes
  365.                  Verhalten"?
  366.  
  367.  
  368.           Es gibt ein paar  Lücken  im Standard, d.h. Dinge, über die der
  369.           Standard nichts aussagt - weder  ob und wie sie definiert sind,
  370.           noch  daß sie undefiniert sind. Diese  Lücken  sind  durch  den
  371.           Standard "unspezifiziert". Dabei handelt es sich allerdings nur
  372.           um Spitzfindigkeiten oder Details,  die  in  der  normalen Pro-
  373.           grammierpraxis keine große Rolle spielen.
  374.  
  375.           Im  alten  K&R-C  war  z.B.  unspezifiziert,  ob  ein Kommentar
  376.           ersatzlos gelöscht oder  (wie  es in ANSI-C gemacht wird) durch
  377.           ein Leerzeichen ersetzt wird.                              (wr)
  378.  
  379.  
  380. /Ende von Teil 2/
  381.  
  382. Keep hacking
  383. Wolfram
  384.  
  385.  
  386.  
  387.  
  388.   «------------------[ eLITE gUYS wILL gET iNVITED hERE ]------------------»
  389.         .         .        .            .    :   ·    .
  390.    ____/¦__   ___/¦____ __/¦___________/¦__  ¦   ¦___/¦__         !
  391.    _ ____  \__\____  _//  _____\_________  \ |   | ____  \__     _:/\__
  392.     /·  |____//·  |   \\_____ ·\|   |   |  \\|   |/·  |____/     \ Oo /
  393.    //   |    \    |    \   l   \\   |   |   ·\_  //   |    \     /_--_\
  394.    \__________\________/________/___j___j     /  \__________\     :\/
  395.    -------------------------------------l____/   :-----------     ¡
  396.                                              ·   ·
  397.                     .     :   ·    .           .         .        .
  398.     !        _ ____/¦__   ¦   ¦____¦\____ ____/¦__   ___/¦____ __/¦_____ __
  399.    _:/\__    _ _ ____  \__|   |______   \ _ ____  \__\_  |  _//  _____ __ _
  400.    \ Oo /       /·  |____/|   |/· __  __/  /·  |____//·  |   \\_____ ·\
  401.    /_--_\      //   |    \|   //   |    \_//   |    \    l    \   l   \\
  402.     :\/        \__________\   \____j     /\__________\________/________/
  403.     ¡          -----------·   :----l____/-------------------------------
  404.                           ·   ·
  405.      <*> pRODIGY gHQ <*> nEUTRON wHQ <*> iLLUSION eHQ <*> dYNAMIX gHQ <*>
  406.  
  407.               Upload Date: [01-03-95] «» Upload Time: [07:18:07]
  408.  
  409.   «-------------------[ aSK eLITE fOR SYS-PW & NUMBA ! ]-------------------»
  410.  
  411.                                                           [-AquaAdder v1.0-]
  412.  
  413.  
  414.  
  415.  
  416.  
  417.    
  418.                             -sLiME!^bP·LEADER^mTH!
  419.                          mOGUe!^aC! pRIMUS!/bP·lEADER
  420.                       wHIRLWIND/mTH! MR.VAIN/BNZ^sXi^aC!
  421.  
  422. -- --- ---- pHUKKIN' fAST aMIGA ^ wORLD'S lARGEST cHIPTUNE aREA ---- --- --
  423.       ____
  424.   ___|    |_____________  __________________   ____________________________
  425. _/  _|    |   ._________\/__________  \   _/___\______  \   _____/   _____/
  426. \   \.    |   l/    /   \/    |  _____/_  l     /  _____/\____  _/\____  \_
  427.  \___|    |________/____||-Mo!|________________/_______\ _______\ ________/
  428.      l____|              l____|                         \/       \/
  429.  
  430.     -- --- ---- aMI-eX fREE-lEECH ^ bIG aSCII bASE © bY aC! ---- --- --
  431.  
  432.    -- mYTH! gHQ - -÷- - bIRDHOUSE pROJECTS! eHQ - -÷- - aRT-cORE! eHQ --
  433.  
  434. _______________          _____      _____   _________       ___________________
  435. \.            /________ |.   /_____:o    | /.        \/|___/_       \         /
  436.  \___   _____/|.   /   \||  /|.    |:    |//   ______/·|.   / ______ \    ___/
  437.    /.   /_/·  ||  /     \:  \||    |·    |/   /   \ \/ ||  /_______ \/+    /
  438.   //  ____/   ||  \   \  \   \:   ¯¯¯    |   /    / /  ||  \ /·\  /  \  __/_
  439.  //   / //    |+   \   \      \  \___/   |   \___/ /   |·   \/  \/   /      /
  440. /·   /  \\         /    \     /    |:    |        /         /       /      /
  441. \___/    \________/_____|\___/:    |_____|_______/\________/_______/______/
  442.                              l_____|·MBB·
  443.  
  444.