• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LITTLELIAssembler
    KYOSUKE
    KYOSUKE --- ---
    VIRUS31: "Pokud CWD pracuje s 16bity proc ji nepozmenili tak aby byla schopna pracovat s 32bity"

    ...a k tomu ještě mohli pozměnit kvůlivá 386ce (na konci 80. let) všechny existující DOSovské programy (všichni měli 88ky a 286ky), dyť by to bylo levnější, že jo? ;-)
    _BENNY
    _BENNY --- ---
    a tos jeste neslysel o instrukci CDQ, to je teprve narez ;)
    LITTLELI
    LITTLELI --- ---
    protoze by tabulka instrukci byla dneska desetirozmerna a ne jenom sestirozmerna ;]
    _BENNY
    _BENNY --- ---
    ze by kompatibilita?
    VIRUS31
    VIRUS31 --- ---
    jestli dobre rozumim EAX je 32bitovy. Pokud CWD pracuje s 16bity proc ji nepozmenili tak aby byla schopna pracovat s 32bity a nebylo tak nutne zavadeni dalsi instrukce CWDE (a dalsich).
    podle toho jak ji chapu mi na ty 386ce prijde CWD duplicitni k CWDE. Kdyztak zastavte moji nevedomost, fakt toho zas moc nevim :)
    KYOSUKE
    KYOSUKE --- ---
    VIRUS31: Protože v 16 bitech žádných "horních 16 bitů EAX" nebylo?
    VIRUS31
    VIRUS31 --- ---
    dekuji. a mozna hloupy dotaz tykajici se 386: proc se roztahovat pri rozsirovani do dalsiho registru (DX), kdyz muzu vyuzit hornich 16bitu EAX?
    jsem na 40-te strance tak prosim nekamenovat ^_^
    LITTLELI
    LITTLELI --- ---
    no je to Convert Word to Doubleword.

    dokumentace netwide assembleru rika:

    B.4.19 CBW, CWD, CDQ, CWDE: Sign Extensions
    CBW                           ; o16 98               [8086] 
    CWDE                          ; o32 98               [386]
    
    CWD                           ; o16 99               [8086] 
    CDQ                           ; o32 99               [386]
    
    All these instructions sign-extend a short value into a longer one, by replicating the top bit of the original value to fill the extended one. CBW extends AL into AX by repeating the top bit of AL in every bit of AH. CWDE extends AX into EAX. CWD extends AX into DX:AX by repeating the top bit of AX throughout DX, and CDQ extends EAX into EDX:EAX. pokud chces expandovat maly registr na 32bitovy tak muzes pouzit: movzx pro beznamenkove rozsireni nebo movsx pro znamenkove podle predpisu:
    MOVSX reg16,r/m8              ; o16 0F BE /r         [386] 
    MOVSX reg32,r/m8              ; o32 0F BE /r         [386] 
    MOVSX reg32,r/m16             ; o32 0F BF /r         [386]
    
    MOVZX reg16,r/m8              ; o16 0F B6 /r         [386] 
    MOVZX reg32,r/m8              ; o32 0F B6 /r         [386] 
    MOVZX reg32,r/m16             ; o32 0F B7 /r         [386]
    

    KYOSUKE
    KYOSUKE --- ---
    VIRUS31: Dělá pořád totéž.
    VIRUS31
    VIRUS31 --- ---
    Tak jsem se pustil do cteni PC Assembly Language (Paul A. Carter) a neni mi jasna prvni vec :)
    Co udela instrukce CWD na 'novejsim' stroji? V knize pisou, ze na strojich, ktery jeste nemely 32bitovy registr se AX rozsirilo na DX:AX. Od 80386 je 32bitovy registr, cili CWD bude stale provadet AX -> DX:AX nebo rovnou AX -> EAX?
    Poznamenam, ze se tam zminuji o instrukci CWDE, ktera se prvne objevila u 386tek a provadi prave AX->EAX. Chtel bych znat odpoved na podtrzene :)
    dekuji
    KYOSUKE
    KYOSUKE --- ---
    MIKI001: Holt za protectorátu je to s informacema bídný... :-D
    MIKI001
    MIKI001 --- ---
    LITTLELI: Dekuju za takovyhle vysvetleni .. a jenom koukam co jsem za dob pred protected rezimem ani nezaslechl :)
    KYOSUKE
    KYOSUKE --- ---
    Ono to možná stejně dopadne tak, že se pokusím udělat to napůl ručně. Jestli to chápu správně, tak FPGAčka jsou v tomhle směru dost nevypočitatelný, pokud jde o to, do kolika buněk se podaří narvat konkrétní logiku (efektivní počet hradel/LUT).

    BTW, není Verilog trošku proprietární záležitost? Myslel jsem, že s ním jsou nějaké problémy v tomhle směru.
    LITTLELI
    LITTLELI --- ---
    * a co Verilog?
    KYOSUKE
    KYOSUKE --- ---
    * kyosuke si postahoval hromadu chytrých knih o VHDL a moc dobře ví, proč... :-)
    LITTLELI
    LITTLELI --- ---
    MIKI001: no to rozhodne nikoli. v realnem rezimu proste muzes adresovat 20bitu z toho nad 640KB je oblast rom adresaci mas segment:offset pricemz segment i offset predstavuji 16bitove registry, finta je v tom, ze se prekryvaji po jednotkach, kterym se rika paragrafy. pak mas virtualni rezim, tj. ze vytvoris z chraneneho rezimu nejaky sestnactibitovy segment podle pravidel chraneneho rezimu a nastavis ho fakticky tak, ze vypada jako prostredi realneho rezimu - navic se tak zpristupnovala pamet na tim 1MB pres XMS nebo EMS (vetsinou opet emulovaneho pres XMS). no a vlastne je ve hre jeste A20 brana :) coz jeste snad zpristupnuje jeden bit nad temi 20.

    no v tom chranemym mas pak selector:offset, selector zde ma jinou funkci, selektor ukazuje do tabulky deskriptoru, kde je uvedena rada veci a predevsim baze tj. fyzicke resp. logicke/virtualni pametove misto. pak tam je rada veci, prava toho "segmentu", typ - (interrupt gate, stack, code segment, overlay...), sirka (16/32bitu) ale ono je to vsecko v dokumentaci a je to slozity jak budik.

    vlastne zadny operacni system nevyuziva moznosti ochrany pameti na x86 proste proto, ze je to strasne slozity, nekde hodne silny nekde docela nedomysleny, kdyz do toho pribude strankovani s ruznymi moznostmi strankovani (4KB/1MB) tak to zacina bejt slusny peklo.

    ale rozhodne proste v realnem rezimu se ti nepodari naadresovat tech zminenych 4GB. na to potrebujes uz rezim ochrany a to jeste navic 32bitovy. na 286 byl rezim ochrany take, ale byl omezeny na 64kb segmenty (adresace 16MB).

    tohle je fakt peklo a nevim dneska se tim nema moc cenu zabyvat mi prijde.
    MIKI001
    MIKI001 --- ---
    LITTLELI: To je strasne zajimavy co pises, ale nejak se v tom ztracim, jestli to dobre chapu tak jde v realnem modu psat kod bez prefixu a budu pouzivat napriklad 32-bitovy registry a muzu se dostat na celou 2^32 pamet? Staci kdyz "nejak" oznacim segmenty ze maji mit 32-bitovou adresaci?
    KYOSUKE
    KYOSUKE --- ---
    LITTLELI: Budu si Tě muset pořídit do knihovny. :-) Začal jsem už konečně jemně studovat toho dinosaura, co si říká x86.
    LITTLELI
    LITTLELI --- ---
    to prefixovani jak jej popisujes je spis dusledek.
    ve skutecnosti jde o to, ze prefixovani se ridi flagem uvedenym pro danou polozku v tabulce deskriptoru. Segmenty jsou s 16bitovou nebo 32bitovou adresaci. A nejspis nove i 64bitovou adresaci u novych modelu.
    MIKI001
    MIKI001 --- ---
    RCR: No podle mne ma, dos ti bezi prece v real modu a pro pouziti 32-bitovych instrukci musis psat prefix pred instrukcema, zatimco v protected modu uz se zadnej prefix psat nemusi.
    Jo a nenabizi dosapi i treba w9x, ale to si uz nejsem moc jistej :)
    Kliknutím sem můžete změnit nastavení reklam