home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / text / TagItems / text0004.txt < prev    next >
Encoding:
Text File  |  2014-05-19  |  3.7 KB  |  79 lines

  1. In article <1992Jul5.140459.184@bernina.ethz.ch>, Markus Wild writes:
  2.  
  3. > In article <Ebnir*Ps1@germal.bs.open.de> gm@germal.bs.open.de (Gerald Malitz) writes:
  4. > >    Strings haben im Code-Hunk nichts zu suchen, denn sie sind
  5. > >ja nun mal nicht executable.  Veraenderlich - im Sinne von nicht vor
  6. > >Schreibzugriffen geschuetzt - sind sie beim Amiga ja in jedem Fall, Exec
  7. > >bietet kein Protected-Memory.  Andererseits kann ein Programm mehrere
  8. >
  9. > Diese Unterscheidung ist ja nur wichtig, wenn Du residentfaehige Programme
  10. > schreiben willst, deshalb hab ich das ja explit erwaehnt. In diesem Falle
  11. > kannst Du Dir nicht mehrere Data-Hunks leisten, da Du ja mit A4 alle DATA
  12. > Objekte erreichen musst. Chip-Data Hunks sind unter diesen Umstaenden auch
  13. > speziell, und muessen wie CODE Hunks behandelt werden, denn wenn sie auch
  14. > veraenderlich sind, hast Du im Nu ein nicht-pures Programm.
  15.  
  16.     Natuerlich koennen residentfaehige Programme mehrere Data-Hunks
  17. haben, und sie haben sie auch.  Lediglich die globalen veraenderlichen
  18. Daten muessen relativ adressiert werden.  Die Konstanten - um genau die
  19. geht es ja - koennen ebenso wie der Code gemeinsam benutzt werden.  Sie
  20. werden in jedem Fall absolut adressiert, ob sie nun in einem Code oder
  21. einem Datensegment liegen.  Wenn Du das Beispielprogramm von Andreas mal
  22. compilierst, hast Du (zumindest mit SAS) ein Executable mit drei Hunks:
  23. dem Code-Hunk und zwei Daten-Hunks, einer enthaelt die globalen Variablen
  24. des Programms (in dem Fall hauptsaechlich aus der Linklibrary), der andere
  25. die Konstanten (in dem Fall den String "Hello World\n").  Letzterer muss
  26. eben nicht in den Code-Hunk.
  27.  
  28.     Deshalb bekommt Andreas ja auch Probleme, wenn er dem Linker
  29. die Option SMALLDATA mitgibt.  Dann werden diese beiden Data-Hunks
  30. zusammengefasst.  Wenn er Pech hat, landet am Ende alles - auch die
  31. Variablen - im Hunk fuer globale Konstanten.  Klar, dass das schief
  32. geht.
  33.  
  34. > >die erste Wahl.  (Btw. wer seine Strings nun doch unbedingt unter den
  35. > >Code gemixt haben will, soll sich aus dem Handbuch eine geeignete
  36. > >Compileroption suchen.  Die gibt es naemlich auch.  Aetsch.  Helfen
  37. > >wuerde es in diesem Fall aber auch nicht.)
  38. >
  39. > Aeh, wer sagt denn, dass Exec *nie* Protected Memory bieten wird?
  40.  
  41.     Und wovon traeumst Du Nachts ;^)
  42.  
  43. > Genauso wenig wie es Protected Memory gibt im Moment, gibt's Protected
  44. > Hunks, also steht's 1:1, aetsch zurueck;-)))
  45.  
  46.     Abseits, ganz klar! =:^>  Dir fehlt nach wie vor der Grund,
  47. Daten in den Code zu mischen - da sie ja so oder so nicht geschuetzt
  48. sind und in jedem Falle absolut% adressiert werden muessen.
  49.  
  50.     % mindestens aber pc-relativ, das ist aber auch nicht ohne,
  51. da bei SAS die Module auf 64K beschraenkt sind.
  52.  
  53. > Helfen tut es immer dann,
  54. > wenn residentfaehige Programme mit moeglichst viel Data erzeugt werden
  55. > sollen.
  56.  
  57.     Helfen kann ich nur dann, wenn Konstanten da sind, die aus
  58. dem relativ zu a4 adressierten Bereich herausgenommen werden koennen.
  59. Die muss ich aber nicht in ein Code-Segment packen, sondern kann sie -
  60. wie oben beschrieben - auch in einem eigenen Daten-Segment unterbringen.
  61.  
  62.     Nebenbei: das Erzeugen residenter Progamme mit cres.o ist IMHO
  63. sowieso nur ein Hack, fuer den man einen Preis zahlt.  Die globalen
  64. Variablen sind auf 64K beschraenkt (schoenen Gruss an die DOSe), das
  65. ganze fuehrt leicht zu Verwirrungen (Blink-Warnings) oder Abstuerzen
  66. (Option SMALLDATA) und __saveds bzw. geta4() tun auch nicht mehr wie
  67. gewuenscht.
  68.  
  69. > -Markus
  70.  
  71.     Tschuess, Gerald.
  72.  
  73. -- 
  74.   // Gerald Malitz,  Bolchentwete 4,  3300 Braunschweig,  Voice: +49 531 796832
  75. \X/ gm@germal.bs.open.de    "Allein der K|ndigungsschutz f|r Schwangere hat den
  76. ungeborenen Kindern tausendfach mehr geholfen als alle Kardindle, Staatsanwdlte
  77. und Richter zusammengenomen"                                     Heiner Gei_ler
  78.  
  79.