asembler masm - procesor intel x86

0

Cześć, zastanawiam się czemu poniższy rozkaz procesora nie powoduje błędu asemblacji a uruchamia sie poprawnie biorąc pod uwagę wyłącznie dwa ostatnie nawiasy kwadratowe z rejestrami:

mov eax,dword PTR [edx][edi][ebx][ecx]

Co o tym myślicie ? Nie wiem czemu twórcy nie zrobili tego w ten sposób by powodowało to błąd asemblacji a brane są pod uwagę dwa ostatnie nawiasy kwadratowe. I have no idea. Dzięki za odpowiedzi.

1

Pokaż pod disassemblerem albo chociaż w hexach całą instrukcje, bo takie coś jak ty tam wpisujesz to jest niemożliwe imo.

0

Pewny jesteś że to sie kompiluje? Bo ja mam wątpliwości.

3
Proxima napisał(a):

Pokaż pod disassemblerem albo chociaż w hexach całą instrukcje, bo takie coś jak ty tam wpisujesz to jest niemożliwe imo.

Shalom napisał(a):

Pewny jesteś że to sie kompiluje? Bo ja mam wątpliwości.

Kompiluje się do

67668B0419        mov eax,[dword ecx+ebx]
pawel_bolak napisał(a):

Nie wiem czemu twórcy nie zrobili tego w ten sposób by powodowało to błąd asemblacji

  1. bo twórcom nie przyszło do głowy że ktoś napisze tak idiotyczną instrukcję
  2. bo im się nie chciało
  3. bo nie mieli czasu
  4. bo ważniejsze jest żeby działało to co powinno działać, a nie żeby nie działało to co nie powinno.
0

Bardzo rzeczowe wytłumaczenie nie ma co, wykładowca nam powiedział, że dostaniemy dodatkowe punkty jeśli odpowiemy czemu twórcy zrobili coś takiego, więc na pewno poprawną odpowiedzią jest jedna z czterech które napisałeś wyżej. Na pewno :) :) :)

0

Pytanie jest bezsensowne. Jest tak, bo tak jest. To nie jest prawidłowa instrukcja i nie powinna się kompilować. Ot, niedoróbka.
Możesz do Microsoftu zgłosić błąd ale cię oleją.

0
pawel_bolak napisał(a):

mov eax,dword PTR [edx][edi][ebx][ecx]
Co o tym myślicie ?.

Myśle że powinieneś przysiąść i poczytać o architekturze Intel IA32 x86 to Ci dobrze zrobi ;)
wmii.uwm.edu.pl/~askard/pliki/LABS/.../Instrukcja%20lab_3.doc

Zwróć uwage w szczególności na takie hasła jak ALU, AGU i ich ograniczenia oraz instrukcje LEA
Ponadto chyba nie rozumiesz indeksowania tablic i wskaźników.
Kompendium wiedzy... czas start.

PS Borland C++ Builder 6 (darmowe) ma bardzo prosty i ludzki debugger kodu C -> asm nie chodzi o pisanie programów w C ale o zobaczenie do jakiej postaci kompilator upraszcza instrukcje i zobaczenia co sie dzieje krok po kroku np. __int32 c = 2, d = 1, tabilca[3][2]; __int32 a = tablica[c][d]; itp. Chociaż jest milion lepszych metod polecam bo jest bardzo intuicyjna a robienie wstawek. Nie jest to może dobry nawyk na przyszłość al e świetna metoda na przyjemne kodowanie i nauke ;)
Ewentualni Fresh IDE(fasm)

http://www.binboy.org/asembler/
http://www.cs.virginia.edu/~evans/cs216/guides/x86.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1