Aktywne Wpisy

Lewusx +128
Chłop 10 lat trenował, a ponad 3 lata kuł dupsko dla kawałka kartonu którego 99% nie zrozumie.
Chłop codziennie musi robić iniekcje, ważyć jedzenie, zaczynać dzień od 30min cardio, pilnować kroków, snu i trenować 2,5h, 5x w tygodniu.
Chłop skraca sobie życie świadomie, stracił większość włosów, postarzał się 15 lat, a dalej będzie to robił.
Chłop nawet nie ma z tego pieniędzy, musi płacić za każde zawody, hotele, podróże, a i tak
Chłop codziennie musi robić iniekcje, ważyć jedzenie, zaczynać dzień od 30min cardio, pilnować kroków, snu i trenować 2,5h, 5x w tygodniu.
Chłop skraca sobie życie świadomie, stracił większość włosów, postarzał się 15 lat, a dalej będzie to robił.
Chłop nawet nie ma z tego pieniędzy, musi płacić za każde zawody, hotele, podróże, a i tak
Co poprawić w sylwetce?
- Klata 31.8% (390)
- Bary 7.7% (94)
- Nogi 13.0% (159)
- Brzuch 30.0% (368)
- Plecy 17.5% (214)

Piotrek7231 +204





A więc bawię się asm, a dokładniej asm-tree bo mam całkiem sporo do przemielenia, i mam pewien problem, mam listę instrukcji (InsnList) które chce dodać na początek konstruktora, no i teraz jak to zrobić? Muszę jakoś znaleźć wywołanie do super(...) i wtedy wsadzić za tym elementem, ale nie mogę ogarnąć żadnego sensownego kodu na znalezienie wywołania do super(...) które się nie będzie gubiło przy bardziej zaawansowanych wywołaniach, jakieś rady? Lub może w asm coś takiego już jest?
INVOKESPECIALw metodzie o sygnaturze:()V(przed nią pewnie będzie odkładanie parametrów konstruktora na stos) - można szukać w ten sposób. A może wygodniej byłoby napisać te Twoje instrukcje w metodzie innej klasy w zwykłej Javie, skompilować, dołączyć w runtime, a w konstruktorze dodać tylko wywołanieProblem jest taki że jak np w super() uznasz że chcesz stworzyć nową instance super klasy to bytecode wygląda tak:
// klasa: http://pastebin.com/28rA7PvK
ALOAD 0 // this, od super.
NEW org/test/TestByte
DUP
ACONSTNULL
INVOKESPECIAL org/test/TestByte. (Ljava/lang/Object;)V
NEW, a potemINVOKESPECIAL Testowa.. Pierwsza instrukcja konstruktora (na poziomie kodu wysokiego poziomu) to musi być zawołaniesuper(), czyli dążysz do tego, żeby zawołaćINVOKESPECIAL org/diorite/TestByte..... W tym celu możesz chcieć przygotować jakieś parametry, potencjalnie tej samej klasy, ale jest ograniczenie - one też muszą zostać zainicjalizowane, zanim zostaną przekazane dosuper()