Welcome, Guest. Please login or register.


Author Topic: FORTH (Read 2463 times)

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 25.0.1364.172 Chrome 25.0.1364.172
    • View Profile
FORTH
« on: 2013.March.30. 14:04:52 »
FORTH- nak is legyen sajat topikja magyarul is.
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3926
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 25.0.1364.172 Chrome 25.0.1364.172
    • View Profile
Re: FORTH
« Reply #1 on: 2013.March.30. 14:07:12 »
Azt tudja valaki, hogy a FORTH- ban honnan jon ez az utasitas forma ? Es hogy miert kellett az assembly- t is hozza igazitani ?! Hihetetlen hogy 25 ev utan is tud lenni egy akkora kavaras, hogy a hajam az egnek all ...

Tehat hogy mi ez a "5, a, ld " sorrend ? Mire jo ez ? Vagy mit gyorsit ? Vagy kinek allt igy ra az agya ? Honnan jon ez ?
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 26.0.1410.43 Chrome 26.0.1410.43
    • View Profile
    • http://lgb.hu/
Re: FORTH
« Reply #2 on: 2013.March.31. 09:06:58 »
Quote from: Z80System
Azt tudja valaki, hogy a FORTH- ban honnan jon ez az utasitas forma ? Es hogy miert kellett az assembly- t is hozza igazitani ?! Hihetetlen hogy 25 ev utan is tud lenni egy akkora kavaras, hogy a hajam az egnek all ...

Tehat hogy mi ez a "5, a, ld " sorrend ? Mire jo ez ? Vagy mit gyorsit ? Vagy kinek allt igy ra az agya ? Honnan jon ez ?

Egyszeru, a forth egy verem (stack) orientalt nyelv. Pl a klasszikus 5 + 3 az forth-ban 5 3 + Azaz, beteszed a verembe az 5-ot, majd a 3-at, a + meg osszeadja a verem tetejen levo ket szamot. Az assembly syntax-a ezzel van osszhangban, mivel az is forth implementacio vegulis: a parametereit benyomod a verembe eloszor, es utana jon csak hogy "ld" aminek az operandusai ott vannak a veremben mar.

A forth szepsege amugy az, hogy total egyszeru megis hatekony: a nyelvnek ugymond syntaxisa sincs igazan, un "szavakbol" (word) all, melyeket lehet definialni, az alap forth mag csak annyi kb hogy a word list-ben word-ot keres, amit definialtal, illetve stack-be probal szamokat (ami memoria cim is lehet) elhelyezni, ha nem talal wordlistben semmit az aktualis szora, akkor megprobalja annak tekinteni. A maga a + stb is ugy van definialva, valojaban nem arrol van szo, hogy a "forth mag" resze lenne. Igy a forth nagyon elemi szinten nezve hihetetlenul egyszeru, ellentetben pl BASIC-kel stb.

Pl gforth-ban amit Linux alol probalgatok, egy szo definicioja utolag is megvizsgalhato (see), ott pl latszik, hogy a + az valojaban egy definialt forth word, aminek definicioja egy assembly nyelvu reszlet, ami pont azt csinalja, hogy a verem tetejen levo ket szamot osszead (kiveve azokat), majd az eredmenyt szinten a verembe helyezi el.
« Last Edit: 2013.March.31. 09:44:02 by lgb »

Offline Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 19.0 Firefox 19.0
    • View Profile
    • http://www.ep128.hu
Re: FORTH
« Reply #3 on: 2013.March.31. 09:35:35 »
Azt tudja valaki, hogy a fig-Forth-ban hogy működik a file-kezelés?

Offline Tuby128

  • EP lover
  • *
  • Posts: 955
  • Country: hu
  • OS:
  • Windows Server Home/Server 2003 Windows Server Home/Server 2003
  • Browser:
  • Firefox 20.0 Firefox 20.0
    • View Profile
Re: FORTH
« Reply #4 on: 2013.March.31. 11:44:49 »
Pont most ismerkedem egy nagyon hasonló programnyelvvel, ahol a verem (STACK) 1. elemét ACCU1-nek, a 2. elemét ACCU2-nek hívják.
Az összeadás úgy működik, hogy:
L 12   - (LOAD) Töltsd a 12-őt az ACCU1-be (ACCU1 régi tartalma egyúttal ACCU2-be másolódik)
L 23  - Töltsd a 23-at az ACCU1-be (ACCU1 régi tartalma egyúttal ACCU2-be másolódik, tehát ACCU2 most 12 lesz)
i+   - Végezz integer összeadást ACCU1 és ACCU2 között, majd az eredményt tárold el ACCU1-ben
S "result"  - (STORE) Tárold el ACCU1-ben lévő értéket a "result" nevű változóba

Vajon a Forth is így működik?

Offline Tuby128

  • EP lover
  • *
  • Posts: 955
  • Country: hu
  • OS:
  • Windows Server Home/Server 2003 Windows Server Home/Server 2003
  • Browser:
  • Firefox 20.0 Firefox 20.0
    • View Profile
Re: FORTH
« Reply #5 on: 2013.March.31. 12:22:57 »
Ohh, valamit elfelejtettem. Az általam elmített esetben a verem nem olyan verem, hogy "megtelik", tehát nem kell üríteni. Itt inkább arról van szó, hogy új elem esetén az egész sor átmásolódik a következő helyre, a legutolsó pedig "kiesik". Egyébként nálam 4db ACCU van, de még nem jöttem rá milyen utasítás használja az ACCU3-at és 4-et.
 Ha processzorszinten gondolkodom az ilyen típusú veremkezeléshez nem is kell a memóriában matatni, elég hozzá néhány regiszter, ami a megfelelő módon működik. (Természetesen a feldolgozandó adatokat a memóriából vesszük).
  Valahol mintha azt olvastam volna, hogy az x86 matematikai társprocesszora (amit később a 386DX, 486DX majd Pentium prociknál be is integrálták) is hasonló elven működik. Sőt mintha az MMX utasításkészlet is valahogy így dolgozna.

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Opera 9.80 Opera 9.80
    • View Profile
    • Honlapom
Re: FORTH
« Reply #6 on: 2013.March.31. 13:07:31 »
Érdekes amiket írtok. Az jutott eszembe hogy akkor a gépi kódú nyelv miért nem forth jellegű? Vagy későn jött létre ez a nyelv, hogy már csak a math procikba építhettek be hasonlót?
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Opera 9.80 Opera 9.80
    • View Profile
    • Honlapom
Re: FORTH
« Reply #7 on: 2013.March.31. 13:08:07 »
Illetve azért a gépi kód is forth jellegű valamennyire persze...
Vigyázat! Szektás vagyok! :)

Offline Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 19.0 Firefox 19.0
    • View Profile
    • http://www.ep128.hu
Re: FORTH
« Reply #8 on: 2013.April.01. 14:39:47 »
Ez vajon miért nem működik?

( Vangelis )
: PL
  DURATION PITCH 1 SOUND
;

: VANGELIS
  0 63 63 2 PHASE 0 -10 -10 4 PHASE
  0 -40 -40 20 PHASE 1 ENVELOPE
  160 LEFT 160 RIGHT
    54 6 PL 53 6 PL 53 12 PL
    54 6 PL 53 6 PL 53 12 PL
    54 6 PL 53 6 PL 53 12 PL
    61 24 PL
    61 6 PL 60 6 PL 58 12 PL
    58 6 PL 56 6 PL 54 12 PL
    54 6 PL 53 6 PL 51 36 PL
    53 6 PL 51 6 PL 51 12 PL
    53 6 PL 51 6 PL 51 12 PL
    53 6 PL 51 6 PL 51 12 PL
    60 24 PL
;