🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
21 messages
21 total messages Started by PioM Fri, 15 Sep 2006 13:31
dokumentacja p4
#678
Author: PioM
Date: Fri, 15 Sep 2006 13:31
20 lines
1444 bytes
Witam

W dokumentacji od P4 zaskoczyla mnie instrukcja ENTER i jej opis make stack 
frame for procedure paramaters.
Domyslam sie ze ma to znaczyc zrob ramke stosu dla parametrow procedury.
Druga rzecz ktora wydaje sie dziwna do przerwania, ktore zwykle kojarza sie 
z BIOSem nie bledami.

Np. po uruchomienia programu typu
mov ax,0x0001
mov bx,0x0001
mov cx,0x0001
mov dx,0x0001
int 0x0

wyskakuje komunikat: typu Blad dzielenia przez zero. Skontaktuj sie z 
sprzedawca.

--
PioM
Re: dokumentacja p4
#680
Author: Bogdan (bogdro)
Date: Fri, 15 Sep 2006 14:38
37 lines
2147 bytes
PioM napisał(a):
> Witam
> 
> W dokumentacji od P4 zaskoczyla mnie instrukcja ENTER i jej opis make stack 
> frame for procedure paramaters.
> Domyslam sie ze ma to znaczyc zrob ramke stosu dla parametrow procedury.

Tak. Jest to wolniejszy odpowiednik sekwencji

	push	ebp
	mov	ebp, esp
	sub	esp, xxx

> Druga rzecz ktora wydaje sie dziwna do przerwania, ktore zwykle kojarza sie 
> z BIOSem nie bledami.
> 
> Np. po uruchomienia programu typu
> mov ax,0x0001
> mov bx,0x0001
> mov cx,0x0001
> mov dx,0x0001
> int 0x0
> 
> wyskakuje komunikat: typu Blad dzielenia przez zero. Skontaktuj sie z 
> sprzedawca.

 Mechanizm przerwania to nie tylko BIOS. To także DOS, Linux oraz
nieoficjalnie Windows. Ale wracając do tematu: część przerwań jest
podporządkowana pod wyjątki, np. właśnie dzielenie przez zero. Jak
procesor natrafi na dzielenie przez zero (lub gdy wynik jest zbyt
duży), wywoływane jest int 0.

-- 
Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Re: dokumentacja p4
#679
Author: Matuzalem
Date: Fri, 15 Sep 2006 14:50
71 lines
3113 bytes
PioM napisał(a):
> Witam
>
> W dokumentacji od P4 zaskoczyla mnie instrukcja ENTER i jej opis make stack
> frame for procedure paramaters.
> Domyslam sie ze ma to znaczyc zrob ramke stosu dla parametrow procedury.

Polecenie ENTER (dla proc 80286) powoduje utworzenie ramki stosu i
przygotowuje  procedurę do obsługi przekazanych parametrów.

ENTER ma dwa operandy:
1). stała decydująca o liczbie bajtów jaka zostanie zarezerowowana
na stos dla lokalnych zmiennych
2). stała decydująca o pozoimie zagnieżdżenia procedury

np.

MyProc proc
  enter 4, 0

to jest dokładnie to samo co:

MyProc proc
  push bp
  mov bp, sp
  sub sp, 4

> Druga rzecz ktora wydaje sie dziwna do przerwania, ktore zwykle kojarza sie
> z BIOSem nie bledami.
>
> Np. po uruchomienia programu typu
> mov ax,0x0001
> mov bx,0x0001
> mov cx,0x0001
> mov dx,0x0001
> int 0x0
>
> wyskakuje komunikat: typu Blad dzielenia przez zero. Skontaktuj sie z
> sprzedawca.

int 0h

http://www.ctyme.com/intr/int-00.htm


oraz RBIL:

--------C-00---------------------------------
INT 00 C - CPU-generated - DIVIDE ERROR
Desc:	generated if the divisor of a DIV or IDIV instruction is zero or
the
	  quotient overflows the result register; DX and AX will be unchanged.
Notes:	on an 8086/8088, the return address points to the following
instruction
	on an 80286+, the return address points to the divide instruction
	an 8086/8088 will generate this interrupt if the result of a division
	  is 80h (byte) or 8000h (word)
SeeAlso: INT 04,OPCODE "AAD"
--------G-00---------------------------------
INT 00 - Zenith - ROM DEBUGGER
Desc:	invokes the ROM Debugger when at the BIOS level; equivalent to
	  pressing Ctrl-Alt-Ins on booting.
Note:	since DOS revectors INT 00, it is necessary to restore this
vector to
	  its original ROM BIOS value in order to invoke the debugger once DOS
	  loads
SeeAlso: INT 03"Columbia"


Pozdrawiam
Re: dokumentacja p4
#681
Author: Wojciech Muła
Date: Fri, 15 Sep 2006 15:07
8 lines
1173 bytes
Bogdan (bogdro) wrote:
> Ale wracając do tematu: część przerwań jest podporządkowana pod
> wyjątki,

Jeśli dobrze pamiętam, to Intel zarezerwował na wyjątki pierwsze 32
numery przerwań.  Ale producenci BIOS to olali, niestety.

w.
Re: dokumentacja p4
#689
Author: Bernard
Date: Fri, 15 Sep 2006 15:36
31 lines
1727 bytes
PioM wrote:
> Witam
> 
> W dokumentacji od P4 zaskoczyla mnie instrukcja ENTER i jej opis make stack 
> frame for procedure paramaters.

P4? To było już w 1979 roku w 80186.

> Domyslam sie ze ma to znaczyc zrob ramke stosu dla parametrow procedury.

Niezupełnie, ale niedaleko. Problem w tym, że ta instrukcja jest 
"przedobrzona" i począwszy od i486 (a może od Pentium) wykonuje się 
wolniej, niż trzy instrukcje, które zastępuje.

> Druga rzecz ktora wydaje sie dziwna do przerwania, ktore zwykle kojarza sie 
> z BIOSem nie bledami.

źle się kojarzą.

> Np. po uruchomienia programu typu
> mov ax,0x0001
> mov bx,0x0001
> mov cx,0x0001
> mov dx,0x0001
> int 0x0
> 
> wyskakuje komunikat: typu Blad dzielenia przez zero. Skontaktuj sie z 
> sprzedawca.

To znaczy, że procesor działa poprawnie :) Kłopot byłby, gdyby w trybie 
rzeczywistym zareagował inaczej.
Re: dokumentacja p4
#690
Author: Wiktor S.
Date: Fri, 15 Sep 2006 21:39
27 lines
1582 bytes
>> W dokumentacji od P4 zaskoczyla mnie instrukcja ENTER i jej opis
>> make stack frame for procedure paramaters.
>
> P4? To było już w 1979 roku w 80186.

Być to sobie było, ale jak widać autor wątku wczytywał się w tę od P4, nie 
od 186.

>> Domyslam sie ze ma to znaczyc zrob ramke stosu dla parametrow
>> procedury.
>
> Niezupełnie, ale niedaleko. Problem w tym, że ta instrukcja jest
> "przedobrzona" i począwszy od i486 (a może od Pentium) wykonuje się
> wolniej, niż trzy instrukcje, które zastępuje.

zdaje się, że i coś w stylu

petla:
 ...
 dec ax
 jnz petla

jest (a przynajmniej na niektórych prockach) szybsze od loop.


-- 
Azarien
Re: dokumentacja p4
#682
Author: PioM
Date: Sat, 16 Sep 2006 14:52
27 lines
1829 bytes
Użytkownik "Bogdan (bogdro)" <bogdan@bogdan.pl> napisał w wiadomości 
news:eeedu3$k3f$1@atlantis.news.tpi.pl...
> PioM napisał(a):
>> Witam
>>
>> W dokumentacji od P4 zaskoczyla mnie instrukcja ENTER i jej opis make 
>> stack
>> frame for procedure paramaters.
>> Domyslam sie ze ma to znaczyc zrob ramke stosu dla parametrow procedury.
>
> Tak. Jest to wolniejszy odpowiednik sekwencji
>
> push ebp
> mov ebp, esp
> sub esp, xxx

wiekszy sens mialoby pop eip i na koncu push eip przed retn

> -- 
> Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
> Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
> Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
> Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org

Pozdrawiam
PioM
Re: dokumentacja p4
#683
Author: Maciej Oszutowski
Date: Sat, 16 Sep 2006 16:38
15 lines
1096 bytes
Dnia Sat, 16 Sep 2006 16:52:51 +0200, PioM napisał(a):

>> Tak. Jest to wolniejszy odpowiednik sekwencji
>>
>> push ebp
>> mov ebp, esp
>> sub esp, xxx
> 
> wiekszy sens mialoby pop eip i na koncu push eip przed retn

To już jest zupełnie bez sensu. 

-- 
|   Maciej Oszutowski   | Mowa jest srebrem  |
| imagiATpsytranceDOTpl | a milczenie owiec. |
Re: dokumentacja p4
#685
Author: Wojciech Muła
Date: Sat, 16 Sep 2006 18:41
4 lines
1004 bytes
PioM wrote:
> wiekszy sens mialoby pop eip i na koncu push eip przed retn

Że co?
Re: dokumentacja p4
#686
Author: Wiktor S.
Date: Sat, 16 Sep 2006 18:51
25 lines
1112 bytes
>> push ebp
>> mov ebp, esp
>> sub esp, xxx
>
> wiekszy sens mialoby pop eip

czyli ret

i na koncu push eip

czyli

call here
here:


czyli

że co? :-)




-- 
Azarien
Re: dokumentacja p4
#687
Author: Maciej Oszutowski
Date: Sat, 16 Sep 2006 18:59
15 lines
1115 bytes
Dnia Sat, 16 Sep 2006 20:51:03 +0200, Wiktor S. napisał(a):

>> wiekszy sens mialoby pop eip
> 
> czyli ret

No, żeby było ret to jeszcze musiałoby być:

jmp [esp]

o ile dobrze kojarzę ;)

-- 
|   Maciej Oszutowski   | Mowa jest srebrem  |
| imagiATpsytranceDOTpl | a milczenie owiec. |
Re: dokumentacja p4
#688
Author: Maciej Oszutowski
Date: Sat, 16 Sep 2006 19:01
19 lines
1265 bytes
Dnia Sat, 16 Sep 2006 20:59:50 +0200, Maciej Oszutowski napisał(a):

> Dnia Sat, 16 Sep 2006 20:51:03 +0200, Wiktor S. napisał(a):
> 
>>> wiekszy sens mialoby pop eip
>> 
>> czyli ret
> 
> No, żeby było ret to jeszcze musiałoby być:
> 
> jmp [esp]
> 
> o ile dobrze kojarzę ;)

Ale to to już by doszczętnie ramkę stosu popsuło... ;>

-- 
|   Maciej Oszutowski   | Mowa jest srebrem  |
| imagiATpsytranceDOTpl | a milczenie owiec. |
Re: dokumentacja p4
#684
Author: PioM
Date: Sun, 17 Sep 2006 13:28
8 lines
1275 bytes
>>> push ebp
>>> mov ebp, esp
>>> sub esp, xxx
>>
>> wiekszy sens mialoby pop eip i na koncu push eip przed retn
>
> To już jest zupełnie bez sensu.
Wtedy moze byc push i pop parametrow. :-| 
Re: dokumentacja p4
#691
Author: PioM
Date: Fri, 13 Oct 2006 12:58
8 lines
1301 bytes
Witam

Znalazlem tam bledy zwiazane z instrukcja SAL i SHL.  Uznana jest jako taka 
sama instrukcja w rzeczywistosci obrot liczby  w rejestrze o n bitow i jej 
przesuniecie o tylez samo bitow to nie to samo.

Mam na mysli polecenia zgrupowane w jednym rozkazie (/0.../7). Brakuje tam 
tez 3 polecen. Zarezerwowane?
Re: dokumentacja p4
#692
Author: Wojciech Muła
Date: Fri, 13 Oct 2006 13:24
8 lines
1126 bytes
PioM wrote:
> Znalazlem tam bledy zwiazane z instrukcja SAL i SHL.  Uznana jest jako taka 
> sama instrukcja w rzeczywistosci obrot liczby  w rejestrze o n bitow i jej 
> przesuniecie o tylez samo bitow to nie to samo.

Jakie obroty?

w.
Re: dokumentacja p4
#693
Author: Bogdan (bogdro)
Date: Fri, 13 Oct 2006 14:29
22 lines
1835 bytes
PioM napisał(a):
> Witam
> 
> Znalazlem tam bledy zwiazane z instrukcja SAL i SHL.  Uznana jest jako taka 
> sama instrukcja w rzeczywistosci obrot liczby  w rejestrze o n bitow i jej 
> przesuniecie o tylez samo bitow to nie to samo.

 Litera 'S' w nazwach obu tych instrukcji jest skrótem od słowa
'Shift', a obie te instrukcje służą do przesuwania bitów. Obroty są
realizowane instrukcjami 'Rotate': ROL, ROR, RCL, RCR.

> Mam na mysli polecenia zgrupowane w jednym rozkazie (/0.../7). Brakuje tam 
> tez 3 polecen. Zarezerwowane?

 Nie odpowiem, bo nie rozumiem pytania. Może najpierw przeczytaj
legendę w manualach (bo jest).

-- 
Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Re: dokumentacja p4
#694
Author: PioM
Date: Sat, 14 Oct 2006 19:04
10 lines
1360 bytes
>> Mam na mysli polecenia zgrupowane w jednym rozkazie (/0.../7). Brakuje 
>> tam
>> tez 3 polecen. Zarezerwowane?
>
> Nie odpowiem, bo nie rozumiem pytania. Może najpierw przeczytaj
> legendę w manualach (bo jest).

Jest o tym w dokumentacji. Ja wiem o co chodzi, wiec nie musze czytac drugi 
raz.
Glupia sprawa. 
Re: dokumentacja p4
#695
Author: Bogdan (bogdro)
Date: Sun, 15 Oct 2006 08:32
26 lines
2005 bytes
PioM napisał(a):
>>> Mam na mysli polecenia zgrupowane w jednym rozkazie (/0.../7). Brakuje 
>>> tam
>>> tez 3 polecen. Zarezerwowane?
>> Nie odpowiem, bo nie rozumiem pytania. Może najpierw przeczytaj
>> legendę w manualach (bo jest).
> 
> Jest o tym w dokumentacji. Ja wiem o co chodzi, wiec nie musze czytac drugi 
> raz.
> Glupia sprawa. 

 Wiem, że jest o tym w dokumentacji. Inaczej bym tego nie mówił.

IASDMv2, 3-1:
 /digit - A digit between 0 and 7 indicates that the ModR/M byte of
the instruction uses only the r/m (register or memory) operand. The
reg field contains the digit that provides an extension to the
instruction's opcode.

 Polecenia zgrupowane w jednym rozkazie? Jakich poleceń brakuje?

-- 
Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Re: dokumentacja p4
#696
Author: PioM
Date: Sun, 15 Oct 2006 15:35
34 lines
1982 bytes
>>> Nie odpowiem, bo nie rozumiem pytania. Może najpierw przeczytaj
>>> legendę w manualach (bo jest).

Blad, czytalem o poleceniach. Agresywna ta dokumentacja, powinna byc 
neutralna.

>> Glupia sprawa.
> Wiem, że jest o tym w dokumentacji. Inaczej bym tego nie mówił.

Nie mowie ze nie ma, ale sprawa pewnie jest efektem czynnikow podswiadomych 
zewnetrznych. Hipnoza?
> IASDMv2, 3-1:
> /digit - A digit between 0 and 7 indicates that the ModR/M byte of
> the instruction uses only the r/m (register or memory) operand. The
> reg field contains the digit that provides an extension to the
> instruction's opcode.

Plonk :-)

> Polecenia zgrupowane w jednym rozkazie? Jakich poleceń brakuje?


C0,C1,D0,D1,D2,D3 /6 (SAL?)

F6,F7 /1 (rezerwacja?)
FF,FE /7 (pop?)

F0 LOCK, puste F1.
D5
nie widzialem ich w dokumentacji.

--
Pozdrawiam
PioM 
Re: dokumentacja p4
#697
Author: Wiktor S.
Date: Sun, 15 Oct 2006 18:47
14 lines
1431 bytes
>>>> Nie odpowiem, bo nie rozumiem pytania. Może najpierw przeczytaj
>>>> legendę w manualach (bo jest).
>
> Blad, czytalem o poleceniach. Agresywna ta dokumentacja, powinna byc
> neutralna.

Co w niej jest agresywnego?

Chociaż nie wiem czemu, ale bardziej wolę dokumentację AMD - treść 
praktycznie jest ta sama, ale jakoś lepszym stylem napisana.


-- 
Azarien
Re: dokumentacja p4
#698
Author: PioM
Date: Fri, 27 Oct 2006 13:45
7 lines
1286 bytes
> Co w niej jest agresywnego?

Sprawia takie wrazenie.

-- 
PioM 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads