eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › prosty assembler
Ilość wypowiedzi w tym wątku: 12

  • 1. Data: 2014-10-12 12:49:23
    Temat: prosty assembler
    Od: firr <p...@g...com>

    Juz tego nie pamietam ale podobno c64 mial tylko 3 rejestry a x i y 9pamietam ze byl
    to wlasnie dosyc ladny assembler nie to co Z80)

    zastanawiam sie jak dokladnie powinien wygladac
    maksymalnie prosty assembler ale zarazem funkcjonalny, cos takiego jak asm na c64
    tylko
    moze lkko poprawionego (chodzi o cos w rodzaju
    wirtualnej maszyny nieco mocniejszej moze nic c64
    ale w podobnym stylu)

    chyba moglbym przyjac jakas arbitralną wielkosc slowa ktore rownoczesnie byloby tez
    wielkoscia
    bajtu, na przyklad 20 bitów czy cos w tym stylu, mozna ot tej konkretnej ilosci
    abstrahowac i przyjac na przyklad te 20)

    ale pozatym co powinno tu byc?

    ile rejestrow? jeden? dwa ? trzy?

    na pewno powinien bys mov (ld/st), prosta arytmetyka add/sub/mul/div, adresowanie
    'tablicowe', i skoki (warunkowe),
    procz tego prztdalby sie cal i ret
    ale czy cos jeszcze?


  • 2. Data: 2014-10-12 13:04:49
    Temat: Re: prosty assembler
    Od: firr <p...@g...com>

    W dniu niedziela, 12 października 2014 12:49:23 UTC+2 użytkownik firr napisał:
    > Juz tego nie pamietam ale podobno c64 mial tylko 3 rejestry a x i y 9pamietam ze
    byl to wlasnie dosyc ladny assembler nie to co Z80)
    >
    >
    >
    > zastanawiam sie jak dokladnie powinien wygladac
    >
    > maksymalnie prosty assembler ale zarazem funkcjonalny, cos takiego jak asm na c64
    tylko
    >
    > moze lkko poprawionego (chodzi o cos w rodzaju
    >
    > wirtualnej maszyny nieco mocniejszej moze nic c64
    >
    > ale w podobnym stylu)
    >
    >
    >
    > chyba moglbym przyjac jakas arbitralną wielkosc slowa ktore rownoczesnie byloby tez
    wielkoscia
    >
    > bajtu, na przyklad 20 bitów czy cos w tym stylu, mozna ot tej konkretnej ilosci
    abstrahowac i przyjac na przyklad te 20)
    >
    >
    >
    > ale pozatym co powinno tu byc?
    >
    >
    >
    > ile rejestrow? jeden? dwa ? trzy?
    >

    a moze zero? ciezko sie zdecydowac w takich sprawach

    screenx 100
    screeny 100
    color 0

    i 0

    HERE
    screen+i color
    i i+1
    jmp i<screenx HERE

    ..hmm
    >
    >
    > na pewno powinien bys mov (ld/st), prosta arytmetyka add/sub/mul/div, adresowanie
    >
    > 'tablicowe', i skoki (warunkowe),
    >
    > procz tego prztdalby sie cal i ret
    >
    > ale czy cos jeszcze?


  • 3. Data: 2014-10-12 18:25:37
    Temat: Re: prosty assembler
    Od: Piotr <S...@w...pl>

    W dniu 2014-10-12 o 12:49, firr pisze:
    > Juz tego nie pamietam ale podobno c64 mial tylko 3 rejestry a x i y 9pamietam ze
    byl to wlasnie dosyc ladny assembler nie to co Z80)
    >
    > zastanawiam sie jak dokladnie powinien wygladac
    > maksymalnie prosty assembler ale zarazem funkcjonalny, cos takiego jak asm na c64
    tylko
    > moze lkko poprawionego (chodzi o cos w rodzaju
    > wirtualnej maszyny nieco mocniejszej moze nic c64
    > ale w podobnym stylu)
    >
    > chyba moglbym przyjac jakas arbitralną wielkosc slowa ktore rownoczesnie byloby tez
    wielkoscia
    > bajtu, na przyklad 20 bitów czy cos w tym stylu, mozna ot tej konkretnej ilosci
    abstrahowac i przyjac na przyklad te 20)
    >
    > ale pozatym co powinno tu byc?
    >
    > ile rejestrow? jeden? dwa ? trzy?
    >
    > na pewno powinien bys mov (ld/st), prosta arytmetyka add/sub/mul/div, adresowanie
    > 'tablicowe', i skoki (warunkowe),
    > procz tego prztdalby sie cal i ret
    > ale czy cos jeszcze?
    >


    Assembler zależy od konkretnego procesora, bo to tylko wygodny zapis
    języka maszynowego (pomijam udogodnienia typu etykiety itp.). Zamiast
    zastanawiać się nad assemblerem, trzeba zastanowić się nad konstrukcją
    procesora. IMHO gotowych rozwiązań nie brakuje, jest dużo "małych"
    mikrokontrolerów takich jak wszelkiej maści Atmegi, PIC, klony 8051,
    klony m64k (na przykład Freescale) czy ARM-y. Jeśli to za mało, to jest
    wielu hobbystów-amatorów projektujących własne procesory czy koprocesory
    wykorzystując układy FPGA (opencore.org) czy nawet... budujących własne
    procesory z układów TTL, chociażby słynny Magic-1 zbudowany przez
    jednego z inżynierów Google
    http://www.youtube.com/watch?v=0jRgpTp8pR8
    Warto obejrzeć ten filmik, bo to uzmysławia jak trzeba różne rzeczy
    pogodzić (z jednej strony jak najprostszy CPU, z drugiej strony jak
    najbardziej funkcjonalny, do tego trzeba zrobić kompilator na przykład
    C, napisać system operacyjny itd.).
    Teoretycznie wystarcza jedna instrukcja :D
    http://en.wikipedia.org/wiki/One_instruction_set_com
    puter
    --
    Pozdrawiam
    Piotr


  • 4. Data: 2014-10-12 18:54:05
    Temat: Re: prosty assembler
    Od: firr <p...@g...com>

    W dniu niedziela, 12 października 2014 18:25:37 UTC+2 użytkownik Piotr napisał:
    > W dniu 2014-10-12 o 12:49, firr pisze:
    >
    > > Juz tego nie pamietam ale podobno c64 mial tylko 3 rejestry a x i y 9pamietam ze
    byl to wlasnie dosyc ladny assembler nie to co Z80)
    >
    > >
    >
    > > zastanawiam sie jak dokladnie powinien wygladac
    >
    > > maksymalnie prosty assembler ale zarazem funkcjonalny, cos takiego jak asm na c64
    tylko
    >
    > > moze lkko poprawionego (chodzi o cos w rodzaju
    >
    > > wirtualnej maszyny nieco mocniejszej moze nic c64
    >
    > > ale w podobnym stylu)
    >
    > >
    >
    > > chyba moglbym przyjac jakas arbitralnďż˝ wielkosc slowa ktore rownoczesnie byloby
    tez wielkoscia
    >
    > > bajtu, na przyklad 20 bit�w czy cos w tym stylu, mozna ot tej konkretnej ilosci
    abstrahowac i przyjac na przyklad te 20)
    >
    > >
    >
    > > ale pozatym co powinno tu byc?
    >
    > >
    >
    > > ile rejestrow? jeden? dwa ? trzy?
    >
    > >
    >
    > > na pewno powinien bys mov (ld/st), prosta arytmetyka add/sub/mul/div, adresowanie
    >
    > > 'tablicowe', i skoki (warunkowe),
    >
    > > procz tego prztdalby sie cal i ret
    >
    > > ale czy cos jeszcze?
    >
    > >
    >
    >
    >
    >
    >
    > Assembler zale�y od konkretnego procesora, bo to tylko wygodny zapis
    >
    > j�zyka maszynowego (pomijam udogodnienia typu etykiety itp.). Zamiast
    >
    > zastanawiaďż˝ siďż˝ nad assemblerem, trzeba zastanowiďż˝ siďż˝ nad konstrukcjďż˝
    >
    > procesora. IMHO gotowych rozwi�za� nie brakuje, jest du�o "ma�ych"
    >
    > mikrokontroler�w takich jak wszelkiej ma�ci Atmegi, PIC, klony 8051,
    >
    > klony m64k (na przyk�ad Freescale) czy ARM-y. Je�li to za ma�o, to jest
    >
    > wielu hobbyst�w-amator�w projektuj�cych w�asne procesory czy koprocesory
    >
    > wykorzystuj�c uk�ady FPGA (opencore.org) czy nawet... buduj�cych w�asne
    >
    > procesory z uk�ad�w TTL, chocia�by s�ynny Magic-1 zbudowany przez
    >
    > jednego z in�ynier�w Google
    >
    > http://www.youtube.com/watch?v=0jRgpTp8pR8
    >
    > Warto obejrze� ten filmik, bo to uzmys�awia jak trzeba r�ne rzeczy
    >
    > pogodziďż˝ (z jednej strony jak najprostszy CPU, z drugiej strony jak
    >
    > najbardziej funkcjonalny, do tego trzeba zrobi� kompilator na przyk�ad
    >
    > C, napisaďż˝ system operacyjny itd.).
    >
    > Teoretycznie wystarcza jedna instrukcja :D
    >
    > http://en.wikipedia.org/wiki/One_instruction_set_com
    puter
    >

    ja bardziej mysle o maszynie wirtualnej badz 'emulatorze wymyslonego procesora'
    (jesli miedzy jednym a drugim jest jakas roznica bo nie wiem),
    bardziej mi w sumie chodzi o emulator - z emulatorem jest tylko ten problem ze nie
    jestem pewien czy i jak nalezy zapewnic jakąś czasową
    stabilność takiego emulatora tak by na przyklad
    jeden cykl zajmowal dokladnie iles czasu i by to wszystko wogole nie 'plywało' w
    czasie
    (nie ejstem pewien czy to jest realny problem czy tylko moj teoretyczny wymyslony bo
    widzialem emulatory c64 i nic nie plywalo - z drugiej strony nawet czyste winapowskie
    natywne aplikacje chyba nieco plywają w czasie 9moga sie ciac jak film) tak ze nie
    wiem)

    co do asemblera to to co powyzej napisalem wydaje mi sie jak na razie okay (z lekkimi
    poprawkami), czyli ogolnie prosty asm wogole bez rejestrow


  • 5. Data: 2014-10-12 20:13:07
    Temat: Re: prosty assembler
    Od: Piotr <S...@w...pl>

    W dniu 2014-10-12 o 18:54, firr pisze:
    > ja bardziej mysle o maszynie wirtualnej badz 'emulatorze wymyslonego procesora'
    (jesli miedzy jednym a drugim jest jakas roznica bo nie wiem),
    > bardziej mi w sumie chodzi o emulator - z emulatorem jest tylko ten problem ze
    nie jestem pewien czy i jak nalezy zapewnic jakąś czasową
    > stabilność takiego emulatora tak by na przyklad
    > jeden cykl zajmowal dokladnie iles czasu i by to wszystko wogole nie 'plywało' w
    czasie
    > (nie ejstem pewien czy to jest realny problem czy tylko moj teoretyczny wymyslony
    bo widzialem emulatory c64 i nic nie plywalo - z drugiej strony nawet czyste
    winapowskie natywne aplikacje chyba nieco plywają w czasie 9moga sie ciac jak film)
    tak ze nie wiem)
    >
    > co do asemblera to to co powyzej napisalem wydaje mi sie jak na razie okay (z
    lekkimi poprawkami), czyli ogolnie prosty asm wogole bez rejestrow
    >

    Oczywiście może być procesor bez rejestrów (w tym sensie, że można
    potraktować całą pamięć RAM jako rejestry). W fizycznych procesorach
    stosuje się rejestry ze względu na szybkość działania. W ogólności nie
    musisz się bawić w "dyscyplinę czasową" poszczególnych instrukcji,
    emulatory C64 to stosują, bo chodzi po prostu o emulację konkretnego
    urządzenia (a więc między innymi o to aby programy chodziły tak samo jak
    na oryginalnym C64 a nie 1000 razy szybciej), no i w C64 stosowało się
    cyklowanie oraz wykorzystywano specyficzne zachowania zarówno procesora
    jak i układów peryferyjnych - emulator który tego nie odzwierciedla, nie
    będzie pozwalał na uruchomienie wielu programów. Obejrzyj sobie
    http://www.youtube.com/watch?v=ZsRRCnque2E i zobacz jakie tricki
    stosowali (i nadal stosują) programiści na C64, emulator musi być tak
    napisany, aby te tricki działały, bo inaczej będzie kiepskim emulatorem.
    W swoim "wymyślonym" procesorze nie musisz się w takie rzeczy bawić
    jeśli nie będzie to potrzebne.

    --
    Pozdrawiam
    Piotr


  • 6. Data: 2014-10-12 21:20:02
    Temat: Re: prosty assembler
    Od: firr <p...@g...com>

    W dniu niedziela, 12 października 2014 20:13:07 UTC+2 użytkownik Piotr napisał:
    > W dniu 2014-10-12 o 18:54, firr pisze:
    >
    > > ja bardziej mysle o maszynie wirtualnej badz 'emulatorze wymyslonego procesora'
    (jesli miedzy jednym a drugim jest jakas roznica bo nie wiem),
    >
    > > bardziej mi w sumie chodzi o emulator - z emulatorem jest tylko ten problem ze
    nie jestem pewien czy i jak nalezy zapewnic jak�� czasow�
    >
    > > stabilno�� takiego emulatora tak by na przyklad
    >
    > > jeden cykl zajmowal dokladnie iles czasu i by to wszystko wogole nie 'plywa�o'
    w czasie
    >
    > > (nie ejstem pewien czy to jest realny problem czy tylko moj teoretyczny wymyslony
    bo widzialem emulatory c64 i nic nie plywalo - z drugiej strony nawet czyste
    winapowskie natywne aplikacje chyba nieco plywajďż˝ w czasie 9moga sie ciac jak film)
    tak ze nie wiem)
    >
    > >
    >
    > > co do asemblera to to co powyzej napisalem wydaje mi sie jak na razie okay (z
    lekkimi poprawkami), czyli ogolnie prosty asm wogole bez rejestrow
    >
    > >
    >
    >
    >
    > Oczywi�cie mo�e by� procesor bez rejestr�w (w tym sensie, �e mo�na
    >
    > potraktowa� ca�� pami�� RAM jako rejestry). W fizycznych procesorach
    >
    > stosuje si� rejestry ze wzgl�du na szybko�� dzia�ania. W og�lno�ci
    nie
    >
    > musisz si� bawi� w "dyscyplin� czasow�" poszczeg�lnych instrukcji,
    >
    > emulatory C64 to stosujďż˝, bo chodzi po prostu o emulacjďż˝ konkretnego
    >
    > urz�dzenia (a wi�c mi�dzy innymi o to aby programy chodzi�y tak samo jak
    >
    > na oryginalnym C64 a nie 1000 razy szybciej), no i w C64 stosowa�o si�
    >
    > cyklowanie oraz wykorzystywano specyficzne zachowania zar�wno procesora
    >
    > jak i uk�ad�w peryferyjnych - emulator kt�ry tego nie odzwierciedla, nie
    >
    > b�dzie pozwala� na uruchomienie wielu program�w. Obejrzyj sobie
    >
    > http://www.youtube.com/watch?v=ZsRRCnque2E i zobacz jakie tricki
    >
    > stosowali (i nadal stosuj�) programi�ci na C64, emulator musi by� tak
    >
    > napisany, aby te tricki dzia�a�y, bo inaczej b�dzie kiepskim emulatorem.
    >
    > W swoim "wymy�lonym" procesorze nie musisz si� w takie rzeczy bawi�
    >
    > je�li nie b�dzie to potrzebne.
    >
    >

    chodzi mi o to by jednak po prostu emulator "nie ciął" (nawet minimalnie) - i nie
    wiem jak to zapewnic
    zasadniczo to czas w emulatorze tez sie emuluje
    i o tyle taki emulator moze dowolnie ciac itd i bedzie doskonale wmulowal - ale
    jesliby to mial byc dokladny "fizycznie" emulator to nie powinien ciąć i dzialac
    dokladnie co do mikrosekundy zgodnie z tym jak dziala dizyczna maszyna - nie wiem
    wlasnie jak to sie robi
    taka doskonale fizyczna emulacje (i na ile to jest wazne) -
    z programami na peceta to jest wlasnie straszne ze czasem tną


  • 7. Data: 2014-10-13 10:43:35
    Temat: Re: prosty assembler
    Od: firr <p...@g...com>

    tylko w sumie ta skladnie z symbolami wyglada na niedobrą, moze jednak lepszy bylby
    klasyczny assembler cos w stylu



    mv screenx 1000
    mv screeny 1000
    mv color 0
    mv adr screen_start
    mv j 0
    :v
    mv i 0
    :h
    ad adr i
    mv [adr] color
    jl i screenx :h
    ad adr

    tutaj niedokonczony przyklad, z dwuliterowymi
    opcodami, niejasne jest dla mnie np
    1) jaka skladnie powinna miec etykieta
    2) jaka skladnie powinno miec pisanie pod adres
    3) czy z branchów robic dwie instrukcje compare i warunkowy_jump czy jedna
    trojkargumentową

    pozatym ciekawostka tutaj mialem napisac petle do szyczczenia akranu na czarno (ale
    nie chcialo mi sie konczyc) taka petla w takim asmie (ktory roboczo moge nazwac 2a
    lub AA)
    wygladalaby inaczej niz w typowym c bo w asmie nie chce sie chyba pisac mnozenia,
    potrzebne jest tylko wylacznie dodawanie (z tym ze czasem dodawanie ujemnej i wlasnie
    ciekawostka - nie wiem czy takie dodawanie ujemnej mozna zrobic wylcznie po stronie
    programisty konwencją czy tez potrzebna jest jakakolwiek swiadomosc ze strony
    procesora ze to jest cos innego niz zwykle dodawanie), w pewnym sensie kuszace jest
    by pisac w takim asmie wylacznie z dodawaniem

    (fir)


  • 8. Data: 2014-10-13 14:22:40
    Temat: Re: prosty assembler
    Od: firr <p...@g...com>

    > nie wiem czy takie dodawanie ujemnej mozna zrobic wylcznie po stronie programisty
    konwencją czy tez potrzebna jest jakakolwiek swiadomosc ze strony procesora ze to
    jest cos innego niz zwykle dodawanie),

    o ile tak jest - tj tak ze odejmowanie daje sie zrealizowac na procesorze wylacznie
    z operacją dodawania (gdzie ujemna na przyklad -90 to "max - 90 +1 " (czyli
    powiedzialbym "omax-dodatnia" gdzie omax to max +1 np 256 dla bajtu) to wynika z tego
    ze w asemblerze nie ma czegos takiego jak signed int, unisigned int
    jest tylko jeden typ ktory jest jakby sumą
    signed i unsigned a czy konkretna wartosc jest signed czy unsigned zalezy od
    kontekstu kodu

    - bardzo wazny prosty fakt ale nieststy jakios w zyciu mnie ta swiadomosc (ze tak
    chyba jest)
    mnie omijala - o ile tak to troche znaczy ze
    trzeba zwerufikowac moze swoje podejscie do typow signed i unsigned w c, byc moze
    nawet
    mozna powiedziec ze cos z nimi jest nie tak
    (choc tu to nie wiem, byc moze sa ok zeby informowac kompilator o tych kontekstach
    tylo nalezy czasem wykorzystywac rzutowania by miec dostep do tego wiekszego typu
    (tymczasowo mozna nazwac "signed unsigned int" czy jakos inaczej)


  • 9. Data: 2014-10-13 14:25:56
    Temat: Re: prosty assembler
    Od: firr <p...@g...com>

    > nazwac "signed unsigned int" czy jakos inaczej)

    w sumie przy takich zlozeniach to np taki bajt jest nie tylko suma signed i unsigned
    ale nawet sumą plus signed i minus unsigned, czyli jeden
    bajt moze przechowywac np wartosci od -255 do 255


  • 10. Data: 2014-10-13 18:49:30
    Temat: Re: prosty assembler
    Od: "R.e.m.e.K" <p...@w...pl>

    Dnia Mon, 13 Oct 2014 05:25:56 -0700 (PDT), firr napisał(a):

    >> nazwac "signed unsigned int" czy jakos inaczej)
    >
    > w sumie przy takich zlozeniach to np taki bajt jest nie tylko suma signed i
    unsigned ale nawet sumą plus signed i minus unsigned, czyli jeden
    > bajt moze przechowywac np wartosci od -255 do 255

    Teraz to juz przechodzisz samego siebie, zaslugujesz juz na wielkie Ś przed swoim
    nickiem!
    :-)

    --
    pozdro
    R.e.m.e.K

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: