Autor: Jaroslaw Lis (lis_at_ict.pwr.wroc.pl)
Data: Sat 26 Apr 1997 - 17:52:11 MET DST
On 26 Apr 1997 08:09:39 GMT, "Bogdan Gajewski"
>Cos w stylu:
> mov ax,77
> mov adres+1,ax
>adres jmp E4xx (oryg. xx=00)
>Interesuje mnie jak ten kod bedzie wykonany przez ruzne procesory.
>Zalaczam program ktury wykonuje samomodyfikujacy sie kod
>dla ruznej odleglosci kodu modyfikujacego od kodu
>modyfikowanego (0d 0 do 9 ).
To uwazaj:
8086 mial kolejki 4 slowa [dwubajtowe] - czyli na pewno wiecej
niz 8 bajtow na przod nie zapamietal.
8088 mial 6 bajtow.
286 - ?
386 - 16 bajtow
>Program uruchomilem na K5 -wtedy kod jest zawsze zmieniany
>oraz na intel286 -kod jest zmieniany dla odleglosci >=6.
>Czy mogli byscie sprawdzic jak zachowaja sie inne procesory.
Tak w ogole, to jest jeszcze wazna metoda testowania, i multum innych
warunkow:
1) kolejka sie laduje w miare potrzeby lub wolnego dostepu do pamieci.
wiec zalezy to mocno od poprzednio wykonywanych operacji.
2) kolejka jest czyszczona przy skokach. Jesli wiec skoczysz do
instrukcji mov ax,77, to kolejka jest wyczyszczona, i
niekoniecznie zdazy sie zaladowac zanim nastepny rozkaz sie
wykona.
3) powyzszze nie zawsze dotyczy Pentiumow, ktore maja 'branch
prediction', a w ogole wykonuja do kilku rozkazow jednoczesnie
[na roznych etapach], i jeszcze sa delikatne zaleznosci miedzy
instrukcjami.
4) sa rozne interakcje na poziomie rozlozenia programu pomiedzy bajty,
slowa, linie cache, slowa pamieci... trzeba sprawdzac program
przesuwajac go kolejno o 1 bajt.
5) przerwania niwecza caly efekt.
Sugeruje glowny test programu zrobic jakos tak:
cli ;wylacz przerwania
lea di,adres+1
mov byte ptr di,77
mov cl,77
mov AX,30000
mov bx,3
div bx ;najdluzej wykonywana instrukcja :-)
div bx ;zeby kolejka miala czas sie zaladowac
div bx
div bx
div bx
div bx
div bx
div bx ;moze jeszcze troche
div bx ;tak ze 40 bajtow od zerowania [di]
mov byte ptr [di],al ;po tych dzieleniach to al=0 :-)
nop
nop
adres mov al,77
;a teraz ile wynosi al -77?
>Wiem ze troche przeginam p. wysylajac bin na te liste ale
>zrudlo zajelo by 10X wiecej miejsca,a 300b mozna sciagnac
>w pare sekund wiec darujcie sobie uwagi w stylu:
>("ale palant" ,"powiesic go" ,"polbox do gazu")
ale palant. Mysli ze uruchomie podejrzany program na komputerze :-).
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 16:03:49 MET DST