• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Asm arytmetyka

Object Storage Arubacloud
0 głosów
453 wizyt
pytanie zadane 4 stycznia 2019 w Assembler przez niezalogowany
Czy takie działania jak

sub [esp], eax

Czy oprócz ustawienia flag i zmian w pierwszym argumencie, to czy w "eax" (drugi argument) występują jakieś zmiany? I chodzi mi ogólnie o różne działania arytmetyczne (add sub itp). Czy są jakieś wyjątki? (X86, nasm)

1 odpowiedź

+1 głos
odpowiedź 4 stycznia 2019 przez Chess Szeryf (76,710 p.)
edycja 4 stycznia 2019 przez Chess
 
Najlepsza

https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf

1776 strona w manual'u (instrukcja SUB). (Na końcu masz/jest indeks 4807 (strona) i dzięki temu możesz szukać np. instrukcje, które chcesz zobaczyć, co robią, itp..) (Możesz także, co oczywiste korzystać z innych dokumentacji/poradników do x86 niż tych od Intel'a, np. AMD.) W opisie jest napisane:

Odejmuje drugi operand (operand źródła) z pierwszego operandu (operand przeznaczenia) i przechowuje rezultat w operandzie przeznaczenia. Operand przeznaczenia może być rejestrem lub lokalizacją pamięci. Operand źródła może być stałą, rejestrem lub lokalizacją pamięci. (Tym niemniej dwa operandy pamięci nie mogą być używane w jednej instrukcji.) Kiedy stała wartość jest używana jako operand, to jest sign-extended (rozszerzana ze znakiem??) do długości formatującej operand przeznaczenia. Instrukcja SUB wykonuje odejmowanie liczby całkowitej. To szacowanie rezultatu dla obu ze znakiem i bez znaku operandów liczby całkowitej i ustawia flagi OF i CF do oznaczenia przepełnienia w rezultacie ze znakiem lub bez znaku, odpowiednio. Flaga SF oznacza znak z rezultatu ze znakiem.

W 64-bitowym trybie domyślna wielkość operacji instrukcji jest 32-bitowa. Używając prefiksu REX w formie z REX.R zezwala dostęp do dodatkowych rejestrów (R8-R15). Używając prefiksu REX w formie z REX.R promuje (awansuje) operację do 64 bitów. Zobacz wykres podsumowania na początku tej sekcji dla zakodowania danych i limitów.

Ta instrukcja może być używana z prefiksem LOCK do pozwolenia  wykonania instrukcji atomowo.

Operation

DEST ← (DEST – SRC);

Flags Affected

The OF, SF, ZF, AF, PF, and CF flags are set according to the result.

Czy są jakieś wyjątki? (X86, nasm)

Tak wyjątki zachodzą/występują w niektórych sytuacjach, np. #GP(0).

sub [esp], eax

   100 | 4
    99 | 8
    98 | 12

Ten zapis, co podałeś oznacza chyba, to: od adresu ESP, odejmij wartość która znajduje się w rejestrze EAX. Jeśli pod ESP kryje się wartość 8, to wtedy ESP (adres) będzie mieć wartość 99. A jeśli w rejestrze EAX będzie np. taka wartość: 32, to wtedy działanie będzie następujace:

99 - 32 = 67

Jeśli moje rozumowanie jest niewłaściwe, proszę mnie poprawić.

Przeczytaj interesujące Cię instrukcje w tym PDF'ie i zobaczysz, co tam pisze i znajdziesz odpowiedź na swoje pytanie/pytania.

?? - Nie byłem pewien, co do tłumaczenia, za inne błędne tłumaczeni(e/a) przepraszam.

Podobne pytania

+1 głos
1 odpowiedź 274 wizyt
pytanie zadane 30 grudnia 2018 w Assembler przez niezalogowany
0 głosów
1 odpowiedź 2,033 wizyt
pytanie zadane 19 grudnia 2019 w Assembler przez progNewbie Obywatel (1,130 p.)
+1 głos
2 odpowiedzi 605 wizyt
pytanie zadane 19 stycznia 2017 w Assembler przez niezalogowany

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...