meg ilyesmikkel is lehet talalkozni mint struct interrupt_frame *. Ezt abszolute nem ismerem a gyakorlatban, de nem kizart hogy ezzel pont a "tankonyvi peldaknal komplexebb valami"-k egy reszeben is ki tudunk szabadulni az assembly-zes kenyszerebol.Majdnem. Az struct interrupt_frame * mutató nem oldja meg, és nem is paraméter valójában, hanem a visszatérési értékre (a struktúra legalsó eleme a visszatérési érték) mutat a veremben. Ami ténylegesen megoldja a dolgot (és amit mind a mai napig nem voltak képesek elolvasni a doksiban a TROLLok), az az, ha a mutató után megadunk egy MÁSODIK skalár argumentumot a prototípusban, na akkor a gcc specifikus attribute miatt valójában azt sem paraméterként, hanem lokális változóként kezeli a gcc által generált kód (azaz a visszatérési érték alatti verembejegyzésre hivatkozik). Továbbá, normál szabvány C függvény esetében x86_64-on a veremben található egy red zone nevű terület, a gcc hákolás miatt ez is hiányzik, mert az felülcsapná a struct interrupt_frame-t. A Micsa TROLL által idekopipasztázott i386-os kódnak ezzel sem kell törődnie, mert i386-on nincs is red zone. Mindezt persze érthetően le is írtam, nem is egyszer, csak hát nem tudnak olvasni: - "ABI felülbíráló attribútumot (mint amilyen pl. az "__attribute__((interrupt))") használva már nem szabvány C függvényről beszélünk" és - abban a pillanatban, hogy bármilyen hívásvezérlő attribútumot biggyeszt valaki a függvényhez, az már NEM szabvány ABI.
utana minden esetben a szabvany C ABI szerint adja at a teljes kontextet
siman el tudom kepzelni azt hogy egy megfelelo __attribute__ legeneralja ezt a kodreszletetA helyzet az, hogy ilyen kódot a gcc nem képes generálni x86_64-en. A konkrét gcc hibaüzenet, ahogy már többször is leírtam, "Sorry, unimpimplemented". Amikor Mcsiv azt hazudta, hogy lefordul kapcsolók nélkül, akkor valójában azért volt szükség a "-mgeneral-regs-only" kapcsolóra, mert a teljes kontextet mentő kódot nem, csak az általános célú regisztereket mentő kódot képes generálni (és azok közül is csakis azokat a regisztereket menti, amiket a megszakításfüggvény használ, és nem az összeset).
elegge vegyes az osszkep, igen.Valóban, ennek ellenére "MCsiv beismerte, hogy csak 10 mp-t foglalkozott a témával és nem is ért hozzá, úgy próbált meg rosszindulatóan okoskodni, meg ártó szándékkal kötözködni." 10 másodperc nyilván nem elégséges egy ennyire összetett dolog megértéséhez.