Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 348900 times)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1005 on: 2015.October.16. 15:10:31 »
Quote
acsak megeshet az is, hogyl lehet namespace-be namespace-t ágyazni, mert ebben itt a kánaánod ;)

Mit akarsz mondani ? Szavadat nem értem ...
Z80 System

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1341
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #1006 on: 2015.October.16. 15:11:33 »
Én ezt nem értem ... miért pont 3 ? ? ? Kell itt lennie valami okosságnak ...

Gondolom nem akarnak szarakodni teljes névtér implementálással. Végül is ha ennyivel is el tudnak evickélni, minek erőltetnék magukat.

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #1007 on: 2015.October.16. 15:15:11 »
Mit akarsz mondani ? Szavadat nem értem ...
ha namespace -be lehet namespace definíciót ágyazni, akkor megoldódott a problémád, de rosszul értelmeztem első átfutásra a leírást, szerintem egy fikarcnyival se vagy előrébb itt, mint a SJASM module, globális címke +lokális címke megoldásával.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1008 on: 2015.October.16. 22:55:34 »
FF szegmens elején mennyi memóriát is lehet elhasználni standard 128K -s gép esetén ?
Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Assembly programozás
« Reply #1009 on: 2015.October.17. 10:13:41 »
Ez a megnyitott csatornáktól függ, 128K/EXDOS/FileIO konfigurációnál például az IS-BASIC futása közben az EXOS határ 0A37h, de C=60h EXOS 0 hívás után 1CC0h. File megnyitása a használt eszköztől függően csökkenti a szabad terület méretét. A legbiztosabb megoldás az EXOS 22 és 23 hívások használata. :) Az EXOS veremben is található általában szabad terület (AC00h-AFFFh).

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1010 on: 2015.October.23. 21:56:15 »
Teszem azt IY -ban akarom átadni a mindenkori függvényem stack frame -jét,
mi a leggyorsabb mód arra, hogy egy függvényhívás előtt/után korrektul kezelve legyen ? :

- IY aktuális értéke mentődjön stack -re
- SP = SP - stack freame méret
- IY = SP

- call függvény

- SP = SP + stack frame méret
- IY visszatöltődik a stack -ről
« Last Edit: 2015.October.23. 22:20:02 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1011 on: 2015.October.23. 23:55:29 »
Érdekes dolgokat találtam:

http://www.benryves.com/bin/brass
http://www.benryves.com/bin/brass/syntax/modules.htm

Quote
Brass extends the module idea significantly. Rather than a simple bunch of root-level modules, Brass allows you to nest modules inside eachother.

Félve (nem tudom még hogy majd melyik másik feature hiányozhat a sjasm -ból ...) eresztek meg egy nagy:

JUHÚÚÚÚÚÚÚÚÚÚ -t ... :lol: :lol: :lol:

https://youtu.be/SSbBvKaM6sk?t=12
« Last Edit: 2015.October.24. 00:02:10 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1012 on: 2015.October.24. 00:01:50 »
És ez messze nem minden (csak ennek nincs direkt win binárisa, és nem nagyon reklámozzák ha multis a kódja):

http://k1.spdns.de/Develop/Projects/zasm/Distributions/
http://k1.spdns.de/Develop/Projects/zasm/Documentation/
http://k1.spdns.de/Develop/Projects/zasm/Documentation/z40.htm#A

Quote
This defines a local scope for normal label definitions. This way you can safely use 'standard' names for jump targets in included files without worrying about name collissions.
#local contexts can be nested.

Bár azt még nem látom, hogy akkor itt tudnék -e szabadon cimkészni, miközben ha akarom mégis bárhonnan elérhetek bármit,
de sokkal gazdagabb címke fícsőrei vannak, mint a sjasm -nak ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1013 on: 2015.October.24. 00:30:33 »
Hmmm ... a brass készítője nem is tűnik éppen szimpla entitásnak, érdemes ráböngészni az oldalára:

http://www.benryves.com/

És mint kiderült a fent linkelt bras mára átadta a helyét a bras3 -nak:

http://www.benryves.com/products/brass
http://www.benryves.com/products/brass3

Csak nem igazán (nyomát sem láttam) nyíltforrású ... persze lehet hogy ez engem most nem kellene zavarjon ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1014 on: 2015.October.24. 00:43:53 »
A síma brass -ban még ilyen is van ! :) :

http://www.benryves.com/bin/brass/directives/using.htm

(Jó lenne ha írna dátumokat a release -ekhez, hogy az embernek legyen némi benyomása a fejlesztés üteméről ...)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1015 on: 2015.October.24. 01:34:53 »
Helyesbítek: a brass -okhoz (3 -hoz biztosan) is elérhetőek források.
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1016 on: 2015.October.24. 03:28:52 »
Na a brass3 az elijesztett magától azzal, hogy elég körülményes a használata (egy külön kis programot írtak rá, hogy "meg lehessen" hívni és a projektfájlja alapján lefordítson bármit is), valamint a saját mellékelt projektjeinek lefordításától simán csak elszállt ...

Ha valakinek más lenne a tapasztalata, vagy valamit benéztem, akkor szóljon, mert a brass3 -ban nagyon ráfeküdtek arra, hogy (azon kívül hogy nagyon bővíthető legyen minden része) mindenféle ördöngös szkripteket lehessen benne írni, és így pld. színusz táblákhoz, ilyesmikhez ne kelljen külön tool -okat írogatni, hanem le lehessen kódolni az assembler -nek őket.



Ezek a részek még nincsenek benne a síma brass -ban, de a címke névterekkel eddig azt csinálta hálistennek amit vártam tőle, úgyhogy lehet megvan végre a megfelelő assembler ! :)
Nem kényszerítenek rá, hogy a címkék a sor elején kezdődjenek, egymásba ágyazható struktúrákat is ismer, tud exportálni a bináris mellé inklúdolható címke file -t, rendes C file API szerű eszközökkel tudsz hozzáfűzni binárist a kimenetedhez, és szép színezett html lista file -ja van ... gondolom érzitek ... :)



Ahogy néztem makrók tekintetében nyomja le a sjasm a brass -t és a zasm -ot is, de azért vannak itt is, remélem meg tudom csinálni velük amit akarok, azt nem tudom most előre kiértékelni, hogy melyik pontosan mivel tud többet vagy kevesebbet, pláne hogy még azt sem tudom nekem pontosan milyen makró funkciók fognak kelleni. A legalapvetőbb makrófunkciók meg mindegyikben vannak.

Valamint az tetszett még a sjasm -ban, hogy magától képes (szabályok szerint) szétosztogatni a kódokat a lapok között, majd a címkékből képes megmondani (képezni), hogy melyik lapra került végül, melyet a kódban te felhasználhatsz értelem szerűen lapozásra.
Ezekben az újakban ilyen funkciót nem láttam, itt neked kell explicit megmondanod hogy melyik lapra kerüljön a kód, és saját logikával (makrókkal, címkékkel) kell nyilvántartanod , hogy melyik lapot kell lapozd a milyen címkéhez.
De remélem ez sem fog nagyon hiányozni.
« Last Edit: 2015.October.24. 03:51:23 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1017 on: 2015.October.24. 03:37:59 »
Na jó, úgy nézem egy kis foghíjja azért van a brass címke névtér kezelésének:

Egy gyerek névtérből nem látszanak felfelé a szülő névterek címkéi.

Vagyis ha egy gyerek névtérből egy szülő névtérben lévő címkét akarok elérni,
akkor vagy leírom a teljesen kvalifikált (globális) nevét, vagy pedig a
.using -gal meg kell adjam a címke moduljának a teljesen kvalifikált nevét,
és aztán már a modulban hivatkozhatok az imént .using -olt modul összes címkéjére,
lokális nevükkel. Ütközéseket pedig megadott .using module lista szerint kezeli ...

Há' mos' mér nem lehetett felfele a szülők fele megkeresni az első találatot, ha nincs a címke az adott aktuális lokális modulban ?

Miért kelljen (elvben minden egyes) névteremet (modulomat) úgy kezdenem, hogy visszamenőleg az összes szülő névteret .using -olom a teljesen kvalifikált module nevükkel ?

Legalább valami ".using parent", vagy ilyesmi lenne ... de semmi ...

Hrrrrrrrrrrrrrrrr ... :)
« Last Edit: 2015.October.24. 03:41:19 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1018 on: 2015.October.24. 04:04:19 »
Kellene írni EP -re egy rendes fordítót, mer ezek gagyik ... :)

Na mindegy, azért ezzel a brass -sal meg tudom végre csinálni, hogy file -onként bevezetek egy module nevet,
pld. sys a sys.asm -hez, lpt az lpt.asm -hez, game a game.asm -hez,
aztán azon (az előbb említett nagyságrendű) az egységen belül bevezetek még egy ágyazott névteret minden "képzeletbeli" függvényemnek,
aztán a függvényeken belül a különböző ciklusoknak ...

Majd ezek szerint meg kell adjam a függvényeknek a file szintű névteret viszonylag sok helyen, ahogy egymást hívják majd a függvények,
valamint a függvény szintűeket meg meg kell adjam a ciklus szintűeknek, ahogy a ciklusok esetleg egymásba ugrálgatnak ...

Csak az a baj, hogy pont az lenne a lényeg, hogy globálisan NE kelljen megadni sehol semmit,
mert amint egy .using -ot megadok globálisan, akkor mikor másolom a kódot, vagy csak átrakom,
struktúrálom a névtereket, akkor állandóan át kell írogatni őket ...

Végre egy assembler -be belerakják, és aztán nem keresnek felfele ... megáll az ész ... :)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #1019 on: 2015.October.24. 10:24:02 »
A zasm -ban persze meg van valósítva az automatikus felfele keresés:

Quote
Note: used but locally undefined labels are automatically pushed to the surrounding scope by
#endlocal and will finally reach the global scope, if they were not defined in an intermediate surrounding #local scope. There they can be picked up and resolved by the #include library directive.

Viszont itt meg ha megfigyelitek, a scope -oknak nincsen neve ... vagyis minden a scope -ban lokális lesz, és keresnek is felfele, csak épp elnevezetten nem tudsz a scope -ból egy másik scope -ban lévő lokális cimkét a teljes nevével elérni ...

Aaaaaaaaaaahhhh .... :) (Ami már messze nem juhúúúúú.)
Z80 System