Czy jest tu jakiś specjalista od #assembler, a dokładniej od assemblera dla architektury 64 bitowej ?
Bardzo podoba mi się rozwiązanie tzw. thunka procedury WndProc, zaprezentowanego w tym artykule. Jak dla mnie jest świetne i często z niego korzystałem. Podoba mi się też to upakowanie w szablonie #cpp, w przeciwieństwie do innych, podobnych rozwiązań. Niestety, czasy się zmieniają i królują już głównie desktopy 64-bitowe a
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sheeple:
Po pierwsze stdcall na dzisiejszych superskalarnych architekturach to jakiś smutny żart.
Zapis pod jakiś niezalginowany wskaźnik może być wolniejsze niż skopiowanie wszystkich potrzebnych rejestrów do wykonania zwykłego calla, dzisiaj wszystko trzeba optymalizować pod korzystanie z cach line, a nie rejestrów.
Wykonywanie jakiegoś losowego kodu to teraz dodatkowo bawienie się z wyłączaniem protekcji pamięci.
Jedyna rada to taka, że dzisiaj już nie grzebiemy w ABI, bo to zbyt skomplikowana sprawa.
  • Odpowiedz
Mireczki, pomóżcie mi ze znalezieniem adresu za pomocą pointera, znalazłem różne kawałki kodu, ale żadnego nie mogę doprowadzić do działania. Może powie mi ktoś co robię źle?
#programowanie #autoit #programowanie #reverseengineering #assembler #naukaprogramowania

func _Pointer()
Global $iBase = 0x00400000, $iStaticOffset = 0x120B7C8
Global $bOpen, $sRead
Z.....e - Mireczki, pomóżcie mi ze znalezieniem adresu za pomocą pointera, znalazłem ...

źródło: comment_jhHuzxSgym108RnWzVgA8G9B3u2mA0d5.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

ok, przekminiłem jak to działa, powinienem znaleźć base adress dodać do niego static offset a następnie 2 offsety i powinienem otrzymać finalny adress, zaraz cos z tym pokombinuję
  • Odpowiedz
@ZjemCiNoge: możesz też zrobić byte pattern z miejsca które cię interesuje, dzięki temu nawet jeśli offset się zmieni to signature miejsca będzie takie same i twój offset będzie działać.

", "55 8B EC 51 33 C0 C7 45");">spoiler
  • Odpowiedz
Elko mirki z #programowanie w #asm #assembler - mam problem, pisze sobie funkcje do programu 64bitowego w #nasm, jako argument przyjmuje adres do tablicy floatow no i chce załadować jej fragment do ymm0. Używam instrukcji vmovaps, ale zamiast przesłać się 256bity przesyłają się tylko 128. Po prostu zamiast 8 floatow lądują się 4, dane w tablicy są na pewno ok. Ma ktoś pomysł
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf
reference manual to zawsze podstawowe źródło wiedzy przy każdym nowym układzie, nic nie poradzisz, wcześniejsze tomy mają bardzo dokładny opis całej architektury, ten ma opis wszystkich instrukcji, na początek można sięgnąć po
https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax
https://en.wikibooks.org/wiki/X86_Assembly
może starczy, ale po resztę trzeba sięgać do manuala.
  • Odpowiedz
Z filmów jest wspomniana przez @chrsec seria, można się oprzeć trochę o MIT
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2010/video-lectures/lecture-6-c-to-assembler/
ale nie wiem na ile ci pomoże. Przypomniała mi się jeszcze jedna książka:
http://gnu.mirrors.pair.com/savannah/savannah//pgubook/ProgrammingGroundUp-1-0-booksize.pdf
jest generalnie o składni AT&T więc dobrze, niestety jest stara i opisuje 32bitową architekturę i stare 32bitowe przerwania systemowe w linuxie, ale kod będzie działał na nowym systemie, więc o tyle dobrze.
  • Odpowiedz
@bielu000: zero flag ma wartość true kiedy wynikiem odejmowania jest 0, jak sama nazwa wskazuje. Porównanie to tak napwrawdę odejmowanie (żeby dało się stwierdzić, która liczba jest większa, a nie tylko czy są równe).

Kompilator odwrócił sobie ifa, bo tak jest optymalniej (spróbuj napisać assemblera bez odwracania ifa, to zobaczysz czemu - będziesz potrzebował 2 skoków :) ).
  • Odpowiedz
Czy ktoś może sprawdzić poprawność moich odpowiedzi na poniższe zadanie?
Cyfry szesnastkowe W, X, Y i Z są równe trzeciej, czwartej, piątej i szóstej cyfrom numeru albumu zdającego, zwiększonym o 6.
1. Dla programu poniżej, dodającego dwie liczby 2-bajtowe, odpowiedzieć na pytania:

mov a,r7
add a,r5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej . Mam problem z projektem z assemblera . Przy odpalaniu prograu podaje argument x ,np =2 i ciag znakow np ab ac ay . Jezeli x podalem jako 2 to powinno wypisac mi ac . Ktoś mogłby pomoc ?

#programowanie #assembler #it
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@bohater: Z tego kodu można dostać adres strony z drugim etapem. Powiem, tylko, że hash adresu to a638798661e4a4f8da8b012368cc3131d236bdc8d9cd2ef79c5c6ac0b6f96413, żeby nie psuć zabawy.
  • Odpowiedz
jak w
#assembler pobierac argumenet z linii polecenia?
wiem ze trzeba np mozna uzyc funkcji atoi, ale chcialbym zeby ktos zaprezentowal gotowy przyklad. z gory dzieki
wolam @wytrzzeszcz ( ͡° ͜ʖ ͡°)
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach