• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LITTLELIAssembler
    there are 10 types of people in the world. those who understand binary, and those who don't.
    windows bring the power of yesterday computers in nowadays
    sexy nastenka
    rozbalit záhlaví
    LITTLELI
    LITTLELI --- ---
    _FREZA_: jo vim o tom, ale mel jsem na mysli neco jineho.
    _FREZA_
    _FREZA_ --- ---
    littleli: "s fyzickou se nepracuje nikdy" no primo mozna ne, ale jak jinak by clovek moh programovat DMA enginy ;-). zpetny mapovani na fyzicky adresy je zasadni ficura.
    LITTLELI
    LITTLELI --- ---
    uf uf ja bych rekl jinak, interrupty v poho,
    akorat pri virtualizaci musi interrupt gate ukazovat na segment existujici v ram
    jinak mas double fault a z toho se uz nevylizes.
    to je asi to ne?

    realna adresa je co? to je mysleno jako fyzicka nebo linearni? s fyzickou se
    v podstate nepracuje nikdy a virtualni pamet to je je takova berlicka ne?
    _FREZA_
    _FREZA_ --- ---
    no, i386 neumim takze nevim presne, ale rek bych ze pred nastavenim mmu interrupty nepotrebujes... ;) no kdyztak to muzu vecer zkusit najit
    _FREZA_
    _FREZA_ --- ---
    jachymko: mno nevim, nedela se to tak ze se vypnou interrupty, nastavi se mmu, zapnou se interrupty? (aspon tusim ze takhle sem to videl pro ARM)
    LITTLELI
    LITTLELI --- ---
    nj ale to se stane :)) zase je dobry, ze je jasny kde to bylo.
    LITTLELI
    LITTLELI --- ---
    JACHYMKO: jen to napis, nikdo se ti smat nebude
    LITTLELI
    LITTLELI --- ---
    no mi to delame tak, ze mame po vstupu do PM nastavenou vlastnost zasobniku
    na to ze je to 16bitovy segment, coz samozrejme neni duvod k tomu aby to nefachcilo.
    zasobnik se plni od zhora, to mas take splneno ;)
    tam bude naka bota primo se segmenty...
    mas nejaky debug info k tomu? fakt to pada na tom movu?
    LITTLELI
    LITTLELI --- ---
    offset segmentu... a co se tyce tech deskriptoru vitej do sveta.
    ja uz ani nevim jak to presne funguje ;)
    LITTLELI
    LITTLELI --- ---
    AXTHEB: to je sluzba biosu :))
    AXTHEB
    AXTHEB --- ---
    ; emulace dalnopisu
    LITTLELI
    LITTLELI --- ---
    pasaz s kodem:

    stuj:   hlt
            jmp     stuj
    


    je podle mne moc roztomila :_))
    LITTLELI
    LITTLELI --- ---
    jak se vratit po resetu na spravne misto... ve vm86 se to nepodari! bud je zapotrebi real nebo ring0, ale to jsem nezkousel (proc asi):

    [bits 16]
    [org 100h]
    [section .bss]
    stack_end:
            resw    50
    stack_begin:
    
    [section .data]
    multitask:	db	'Program nelze spustit ve virtualnim rezimu!',13,10,'$'
    reset_msg:	db	'Pokud se cinnost pocitace zastavi pocitac vypnete!',13,10
    		db	'Signal reset byl zaslan procesoru... ',36
    digits:         db      '0123456789abcdef'
    model:          db      'model 0x$'
    revision:       db      ', revision 0x$'
    CRLF:		db	13,10,'$'
    
    [section .text]
    	smsw	ax
    	and	ax,1
    	jz	fajn
    	mov	ah,9
    	mov	dx,multitask
    	int	21h
    	ret				; konec programu	
    fajn:	mov	ah,9
    	mov	dx,reset_msg
    	int	21h
            cli
            push    word 40h
            pop     ds
            mov     ax,cs
            mov     word[67h],real
            mov     word[69h],ax            ; 0040h:67h
            mov     al,0fh
            out     70h,al
            jmp     delay
    delay:  mov     al,0ah
            out     71h,al
            mov     al,0fch			; shutdown processoru tj. 
            				; 1) navrat do realneho rezimu z prot.
            				; 2) provede se skok dle 0040:0067 hned po resetu
            out     64h,al			; nyni se provadi 'pomaly' reset
    stuj:   hlt				; pozastavi cinnost procesoru az
    					; do chvile, kdy se zresetuje
            jmp     stuj			; pouze pojistka pro prichod NMI
            nop
    real:   mov     ax,cs			; tady bude pokracovat nase rutina
            mov     ss,ax
            mov     ds,ax
            mov     es,ax                   ; ted jsou vsechny segm. reg rovny
            mov     sp,stack_begin		; nastaveni prozatimniho zasobniku
    	and	sp,0fffch		; zarovnani ??? zkusmo
            mov     al,0ffh
            out     64h,al                  ; povolit klavesnici
    	cld
            sti
            push    dx			; v DX je model a revize procesoru !!!
            mov     ah,9
            mov     dx,model
            int     21h			; napis model
            pop     ax
            push    ax
            mov     al,ah
            call    ByteToHex       	; napis cislo modelu
            mov     dx,revision
            mov     ah,9
            int     21h             	; retezec revize        
            pop     ax               	; tady je vysledek
            call    ByteToHex        	; napis cislo revize
    
            mov     ah,9
            mov     dx,CRLF
            int     21h             	; zaradkuj
    
            mov     ah,4ch
            int     21h                 	; navrat do DOSu
    
    ByteToHex:
            push    bx
            push    ax
            push    ax
            mov     bx,digits
            shr     al,4
            xlatb
            mov     ah,0eh
            int     10h         ; emulace dalnopisu
            pop     ax
            and     al,0fh
            xlatb
            mov     ah,0eh
            int     10h         ; emulace dalnopisu
            pop     ax
            pop     bx
            ret
    
    WordToHex:
            push    ax
            call    ByteToHex
            pop     ax
            mov     al,ah
            call    ByteToHex
            ret
    


    hehe, to jsem byl jeste pilna vcelka a komentoval kod ;)
    MASCA
    MASCA --- ---
    LITTLELI Tak to vazne problem... To jsem resil, zkousel jsem int15, taky nekde v dat. oblasti BIOSu (seg. 40) mozna neco takovyho je. Kazdopadne ale k tomu, abys ji mohl pouzit, musis prepnout do protectu, a tam uz nevim, jak se takove veci vubec resi. Nicmene, az nekdo odpovi, taky by me to zajimalo.
    LITTLELI
    LITTLELI --- ---
    tak a ted technicka...........

    jak se da spolehlive detekovat velikost fyzicke RAM?
    rekneme, ze jsem po POSTu najety v MSDOSu, muzu si s HW delat co chci
    nemam HIMEM ani jine manazery, kde se to da precist? INT 15h mi ale prosim
    nerikejte.
    LITTLELI
    LITTLELI --- ---
    nechce nekdo predat tenhle klub? dost vazne o tom premyslim
    LITTLELI
    LITTLELI --- ---
    nova nastenka :)
    chtel bych zalozit sekci artworx, ale chtelo by to nejake linky na zajimave projekty psane v asm. klidne i pitominy, jde o to, aby byly necim zajimave.
    HYBY
    HYBY --- ---
    SALUSA: mno tak ja si pod tim predstavuju ze nekdo napsal jaky si vykonne jadro (to je jedno ceho), ktere pouziva specific API a typuju ze ty budes portovat pro AVRka to API tak aby na tom mohl behat ten "independent" code...
    SALUSA_SECUNDUS
    SALUSA_SECUNDUS --- ---
    ;o)) hele dostal sem se k tomuhle inzeratu:

    Vývojový pracovník
    Hledáme odborníka pro samostatný projekt SW do ISDN systémového telefonu pro telefonní ústřednu NetStar

    Požadujeme znalost programování v ANSI C se znalostí specifiky překladačů pro procesory AVR a 51; převod odladěného C kódu na embedded platformy

    no a chtel bych vedet co znamena ta posledni veta, prevod na embedded platformy - padz bych o tu pracicku mel jinak asi zajem ;o)) diky
    LITTLELI
    LITTLELI --- ---
    sledujete anketu?
    18:1 v neprospech SIMD.
    ja hlasoval ze SIMD neumim a vazne by me zajimalo, kterej typ tam zaskrt ze to jako ovlada...
    priznej se!!!
    JANFROG
    JANFROG --- ---
    LITELLI :-)))
    Kliknutím sem můžete změnit nastavení reklam