Szerző |
Üzenet |
Chain-Q
Divatamigás
|
# Elküldve: 2007. Nov. 05. 12:34
Na, ide lehet óbégatni a témában, kérdezni, fikázni, C-s felsőbbrendűségi poénokat benyomni és hasonlókat. :) (Akinek véletlenül MorphOS-re van ingerenciája hozzászólni, a Pegasos.hu fórumban is van hasonló topic a MOS verzióhoz...)
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Nov. 05. 12:46 - Szerkesztve: charlie
Na, elso obegatas akkor tolem, egy kis status report, plusz TCH editoros kerdesere valasz: szoval az m68k-s Free Pascal szepen alakulgat, jelenleg mar kepes vagyok egyszerubb (ertsd nagyon egyszeru) programokat leforditani, megy az alapveto aritmetika, valamint a fordito (amely egyelore mas platformon, PPC-n vagy x86-on fut) valid assembly forrast, majd ebbol alapvetoen mukodo exet general. Jelenleg ott akadtam el, hogyha meghivok egy CreatePool()-t, akkor resetre hasal az egesz gep, es meg nem tudtam rajonni, hogy mitol, mert a generalt kod validnak tunik, raadasul egy gyors AsmPro-s debug utan ugytunik, hogy a regisztertartalmak sem nagyon valtoznak. Szoval ennek a kidebugolasa kovetkezo feladat. Vannak meg tippjeim azert... :)
Ami a hasznalhato editorokat illeti, Amigan CED-et illetve GoldEd/CubicIDE-t, Windows alatt a Context nevu editort, Linux alatt pedig a midnajt kommander editorat, az MCEditet hasznalom. Amigan es Linuxon parancssorbol, Windowson pedig bekonfigolt Context hotkey-jel forditok. Az mceditnek alapbol hasonlit a syntax highlight-je a TP-ehez, a CubicIDE-hez es a Contexthez pedig csinaltam sajat beallitast. Van meg kerdes? :)
|
rachy
Tag
|
# Elküldve: 2007. Nov. 05. 17:28
A Pascal szar, ertem!? ;)
|
Docky_SD
Tag
|
# Elküldve: 2007. Nov. 05. 17:46
Visual Assemby az kell nekünk :DDDDDDDDDDDD
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Nov. 05. 19:21
Koszonjuk az urak konstruktiv hozzaszolasait. Igazan nem kellett volna. :)
|
Docky_SD
Tag
|
# Elküldve: 2007. Nov. 05. 22:55
http://www.programmersheaven.com/download/31694/download.aspx
Mos... komolyan, van ilyen :)
|
Derringer
Tag
|
# Elküldve: 2007. Nov. 06. 00:34
beszarok! és van mk68/ppc vagy csakx86?
|
rachy
Tag
|
# Elküldve: 2007. Nov. 06. 07:37
Latod Docky, igy teljesuljon minden kivansagod! ;)
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Nov. 06. 09:13
Amigara volt vmi GUI builder, ami tudott asm kodot generalni. Az, meg egy AsmOne mar majdnem kiad egy ilyet. :) (Egyebkent koszonom h. szetoffoljak a topicot. Olyan elannal teszik ezt, mintha nem lehetne temat letrehozni... :)
|
TCH
Tag
|
# Elküldve: 2007. Nov. 06. 10:44
Bazzeg, jól van aszalok, mindjárt a kezdésnél ökörségek áradata. :D
Na, de nem offolok már, inkább egy tipp (ami lehet, hogy fasság :P ), szóval, hogy valid a kód, attól még nem biztos, hogy jó is. Nem lehet hogy rossz helyre ugrik a gép, rossz helyre firkant valamit a memóriába, vagy csak simán végtelen ciklusba került valahol?
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Nov. 06. 11:15
1., Vegtelen ciklustol nem lehet reset... Kulonbenis, egy OS hivas meg lefut (ugyertve hogy "belelep" a kod), ami utana jon, mar nem. Ez kicsit gyanus. :) 2., Az lehet, hogy mar korabban felulirt valamit a kod, es csak a CreateHeap-tol doglik meg az OS. Ez siman elofordulhat. Csak akkor azt nem ertem, hogy a programtol fuggetlenul lefuto CreateHeap() miert nem pusztul el, hiszen ha a memorialista serult, annak is ugyanugy kene viselkedie! 3., A memory trash lehetseges. De ezenkivul meg egymillio lehetoseg van. Termeszetesen az is lehet (majdnem biztos), hogy korabban kerul futtatasra valamilyen kod, ami ezt okozza. Vagyis hibas kodot general a fordito (ami egy pre-alfa allapotu verziotol tulajdonkeppen nem is meglepo), es kesobb ez okozza a CreateHeap() crashet. De egyebkent a variaciok szama kb. vegtelen. :)
A kovetkezo lepes, hogy egy Linux/m68k gepen debugolok egy jot, mert ott jobb eszkozok vannak erre, hiszen az OS nem fog fagyni egy hibasan viselkedo programtol. (Akinek van eros taligaja, ajanlom az ARAnyM nevu cuccot. Ami egy olyan Atari-virtualisgep es emulator, ami kepes futtatni a 68k-s Linuxokat.)
|
Chain-Q
Divatamigás
|
# Elküldve: 2007. Nov. 06. 22:45
Na, Free Pascal fejlesztes kedveert kiprobaltam ezt az ARAnyM-et, de nemigazan... :) Eloszor is, azt igertek, hogy 3Ghz-s gepen gyorsabb mint egy 060/100. Ehhez kepest 040/16-ot ment a melohelyen 3500+-os Athlonjan. Aprosag. Ja es a halozat konfig probalkozasok kozben meg a VMWare-s Linuxom network konfigjat is sikerult elkefelni. Biztos bennem van a hiba. Vagy esetleg az Ataris warek bosszuja. Az 1.x-es Free Pascal kodgeneratorat ugyanis egy Ataris faszi irta. Most meselhetnek miket csinal, de nem fogok... :)
|
Chain-Q
Divatamigás
|
# Elküldve: 2008. Okt. 28. 12:46
Na, fejlesztek meg am, ugy ketevente 1x... :) Ez tortent a heten ezen a teren. Annyiban ontopic, hogy 100% AmigaOS API-t hasznal, semmi M****OS specifikust se, tehat OS4-re viszonylag egyszeruen, 68k-ra pedig a kodgenerator meglete utan 2db mozdulattal portolhato. :P
|
rachy
Tag
|
# Elküldve: 2008. Okt. 28. 17:16
Wow, TVision! Ifjukorom legszebb emlekei... :)
|
Chain-Q
Divatamigás
|
# Elküldve: 2008. Okt. 28. 21:12
Kepzelem. :P
|
Chain-Q
Divatamigás
|
# Elküldve: 2008. Dec. 26. 21:59 - Szerkesztve: charlie
Actually, gondolkodtam az OS4-es FPC CPUonly copy problemajan, es rajottem, hogy igenis mindenki hulye, csak en vagyok helikopter! Ezt valoszinuleg ugyanis egy ugyanolyan (ugyanaz?) az GNU LD bug okozza, ami miatt Samanthara uj binutils kell majd!
A problema, ugyanis unrolled loopoknal jelentkezett, amelyeket a fordito kozvetlenul beletolt a kodba, pl. globalis valtozokhoz, strukturakhoz! Namost, a vegleges execute-ban, ezek 8 helyett 4-re lettek alignolva, aminek egyenes kovetkezmenyekent maris megdoglott az egyebkent tokeletesen bugmentes, FPU-s unrolled copyloop! Es gyakorlatilag ugyanennek(?) az "alignment" bugnak az eredmenye az, hogy a Samanthara uj binutils kell.
Namost, harom dolog.
1., Azota az OS4 port is a VBCC-fele VLink-et hasznalja, fingom sincs hogy pl. azzal is jelentkezik-e a problema! Mivel a CPUonly "compatibility" modot meg GNU LD-vel kapcsoltam be.
2., Szoljatok ha lesz bugfixelt GNU LD...
3., Szoljatok ha a fentiekben valahol tevedtem. Ellenkezo esetben egy "Sorry..." jol esne... :)
Majd ha a sadddam vegleg megutalta az OS4-et (hehe), es visszakerul a hanyattatott sorsu uA1 hozzam, akkor letesztelem az elmeletemet.
|
rachy
Tag
|
# Elküldve: 2008. Dec. 27. 09:15
Ugy erted, hogy a forras objectekben jo az alignment es az LD rosszul rakja ossze? Es mindennek mi koze az FPU copy-hoz? A forras nem igazitott rendesen? Esetleg egy ObjDump-al tudod ellenorizni konkretan mi tortenik.
Az LD-ben valoban vannak (voltak?) bugok, bar konkretan errol a linkelesi problemarol meg nem hallottam. Majd talan nemsokara lesz uj SDK es abban bugfixalt Binutils. Addig is "sorry"... :)
|
Chain-Q
Divatamigás
|
# Elküldve: 2008. Dec. 27. 12:12
Ugy erted, hogy a forras objectekben jo az alignment es az LD rosszul rakja ossze? Igen? Ugy tunik... Mivel az FPC altal generalt asm forrasban *elvileg* meg van adva a 8-ra alignolas, de az LD (vagy az AS) ezt lefossa. Ujra meg kene neznem a kodot, mert tok regen volt, de igy emlekszem...
Es mindennek mi koze az FPU copy-hoz? Az, hogy ha egy ilyen globalis tombhoz vagy structhoz, vagy barmihez FPU-s masolast general a fordito, akkor az OS4-en elhal.
Bar konkretan errol a linkelesi problemarol meg nem hallottam Cobra mondott rola valamit a Samantha kapcsan, hogy majd akkor lehet igazan optimalis cuccokat forgatni, ha kijon vmi uj binutils, amiben fixeltek valamit az alignmentek kornyeken.
|
Cobra
Piros troll
|
# Elküldve: 2008. Dec. 27. 12:26
ChainQ: Uj OS4 SDK coming soon... ;-)
Egyebkent egesz konkretan Sam alatt az a helyzet, hogy a PPC440-nel egy double (tehat 64 bites) FPU load/store-nak egy 16 byteos hataron belulre kell esnie. Ez azt jelenti, hogy ha a cim utolso 4 bitje 0x0, 0x4 vagy 0x8, akkor nincs gond, de ha 0xC, akkor az adat fele mar atesik a kovetkezo 16 byte-os szegmensbe, es ez exceptiont dob.
Es valoban, ez a hiba azert jelentkezik, mert a C compiler hiaba teszi be a fileokba a megfelelo alignment informaciot, az ld elcseszi, es csak 4 byte-ra alginol. Ha ez epp 0x4 vegu cimet jelent, akkor nincs problema, de ha 0xC akkor nyekk.
Viszont en nem vagyok benne biztos, hogy a te FPC problemad emiatt van, mert a 603e/604e/G3/G4 chipeknel nincs ilyen limitacio, azok a procik lekezelik, ha egy 64-bit float access csak 4 byte-ra van alignolva, csupan nem lesz annyira gyors, mint ha 8 byte-os alignment lenne. Pont ezert van, hogy eloszor a Sam-en jelentkeztek ezek a problemak. A tobbi PPC-s vason csak akkor lenne problema, ha meg a 4 byte-os alignmentet se tartod be, de azt az ld betartja.
|
Chain-Q
Divatamigás
|
# Elküldve: 2008. Dec. 27. 12:52 - Szerkesztve: charlie
Cobra: Ertem, es az nekem sem teljesen vilagos, hogy a tobbi procin miert esik szet. Ezert mondtam, hogy meg egyszer at kell neznem ezt az egesz mizeriat... :) De majd ha visszakerul vmi gep hozzam.
Ha valaki akar vele kuzdeni, akkor segitek leforditani az FPC-t, de ketlem, hogy olyan nagyon akarjatok. :D
Szerk: alternativ megoldaskent vissza kene nezni az Amiga.hu forumban ennek kapcsan kialakult flame-et, de arra meg annyi kedvem sincs. :P
|
Cobra
Piros troll
|
# Elküldve: 2008. Dec. 27. 12:57
ChainQ: Bevallom oszinten en se emlekszem mar ra pontosan, hogy az FPC-nel konkretan mi volt a gond, de szerintem amikor visszakapod az A1-et, es engedelyezed ezt az optimot az FPC-be, az elso GrimReaper megmondja, mi ujsag ;)
|
TCH
Tag
|
# Elküldve: 2010. Dec. 28. 22:25
Így két év plusz egy nap után van valami fejlemény?
|
Chain-Q
Divatamigás
|
# Elküldve: 2010. Dec. 28. 23:07
Nincs. Az OS4 változat lekerült a napirendről (hacsak más neki nem áll, elrontani nemfogom a már elkészült részeket), a classic verzió meg átkerült a nyugdíj utáni projektek közé.
|
TCH
Tag
|
# Elküldve: 2010. Dec. 29. 12:35 - Szerkesztve: TCH
És a MOS verzió?
Vagy ez off-forum?
|
Chain-Q
Divatamigás
|
# Elküldve: 2010. Dec. 29. 21:14
Off. Egyelőre.
|
TCH
Tag
|
# Elküldve: 2011. Már. 11. 20:52
Ez félig off lesz, mert Pascal, de nem Free, hanem HiSoft, bár gondolom a célt tekintve hulla mindegy.
Hogyan lehet "felakasztani" egy Pascal program valamelyik függvényét a VBlankra? Kanyarban van már a parallel transferes cucc mind a két oldala, de az Amigás oldalon amíg valamilyen parancsra vár (épp gépel vagy gondolkodik a Linuxos oldalon a júzer) addig nem kéne folyamatosan futnia egy üres ciklusnak ami folyton csekkolja a parallel portot, mert feleslegesen zabálja a CPU időt.
Gondolom a "felakasztandó" szubrutin címét kéne ráhúzni a VBlankra, na de hogy kérem el a fordítótól valamelyik szubrutin címét úgy mint ahogy Assemblyben a címkékét?
|
Chain-Q
Divatamigás
|
# Elküldve: 2011. Máj. 03. 12:22
@TCH: Na erre jól nem válaszoltam. Kell még? :) Igazából nem is értem mit akarsz csinálni és miért... :) Amúgy gondolom egy Pascal függvényt pont úgy lehet felhookolni egy bármilyen interruptra mint egy C kód függvényét, szóval OS API hívások meg egy procedure-ra mutató pointer...
Más: Valaki (egy német csóka) átírta a Free Pascalt AROS-ra. Még nagyon kezdetleges a port, de már ki vanik adva, letölthető az Aminetről. YouTube videó itt.
|
Chain-Q
Divatamigás
|
# Elküldve: 2011. Máj. 03. 13:24
@TCH: Egyebkent valami ilyesmit akarsz, nem?
program funcptr;
var c: pointer; // mezei pointer definicio p: procedure (s: string); cdecl; // fuggveny tipusu valtozo definicio
{* A cdecl; freepascalban kell, ha C-s kodbol is hivodik a fuggveny, tehat pl. OS-nek atadott callbackhoz, masnal nem tudom... *} procedure somecraptocall(s: string); cdecl; begin writeln(s); end;
begin c:=@somecraptocall; // c-be sima pointerkent tesszuk, ezt adnank at egy C-s fuggvenynek! p:=@somecraptocall; // p-be tipusos fuggvenypointerkent tesszuk p('hello world!'); // pascalbol tipusos fuggvenypointerkent hivhatjuk! end.
|
TCH
Tag
|
# Elküldve: 2011. Máj. 03. 13:52
Csárli: Jobb későn, mint soha, de közben Toni Wilen már felhomályosított róla, hogy hogy ne akarjak én itt interruptokra aggatni semmit, mert ott a timer.device, meg példát is adott. Azért köszi, a kódot, most már ezt is tudom, hogy hogy lehet a szubrutinok címét elkérni. :) Lehet, hogy jól jön még.
Egyébként a parallel Amiga2PC cucchoz kell, mert Amigán nem akarom, hogy w4a közben folyamatosan fusson az üres Repeat Until Ack(); ciklus. Időnként kap futási időt a program, akkor nézi, hogy volt e visszajelzés, amúgy meg ne fogja a cpu időt.
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Jún. 12. 23:35
Hátha valakit érdekel:
Az elmúlt néhány napban feltettem néhány cross-binutils csomagot, amivel Linuxon, Windowson és OS X-en készíthet magának bárki MorphOS-es Free Pascalt, vagy olyan Free Pascal keresztfordítót, ami a nevezett rendszereken képes MorphOS-es exe-ket generálni.
Letölthetők innen. Sőt, még rövid HowTo-t is írtam az FPC wikibe, hogy hogyan kezdj neki a saját cross-FPC csinálásnak, a fenti csomagok segítségével.
|