Még most sem voltál képes válaszolni... Várható volt. De azért kapsz mégegy utolsó esélyt, hogy tisztára mosd a neved!
Miért történt az, hogy micsa sorával ott van az iretq, a sora nélkül pedig sima ret van?Mert az ABI felülbíráló attribútumot törölted ki, nyilvánvalóan!
Mi olyan történik az egyetlen (és nem "rakat kapcsoló") "-mgeneral-regs-only" hatására, ami bármiben is megváltoztatná az előbbi eredményt?Le se fordul nélküle, hibát dob, amit megpróbáltál LETAGADNI. (GYK: a többes számot meg azért használtam, mert nem az "-mgeneral-regs-only" az egyetlen, amivel fordításra lehet bírni, például használhattál volna "-mno-sse -mno-mmx -mno-80387" kapcsolókat is, ugye.)
$ gcc aaa.c -o aaa
aaa.c: In function ‘handler’:
aaa.c:1:1: sorry, unimplemented: SSE instructions aren’t allowed in an interrupt service routine
1 | void __attribute__((interrupt)) handler(void *p) {}
| ^~~~
Tehát egyértelműen HAZUDTÁL, mikor azt mondtad, "Az említett egy darab sor nálam hiba és warning nélkül fordul -Wall opcióval, ráadásként az elvárt eredményt hozza iretq -val".
És most rajtad a sor, barátocskám, VÁLASZOLJ!
- miért most utólag akarsz kötekedni, miért voltál végig csöndben, amikor egy hét időt adtam a válaszokra?
- miért hiszed, hogy az ABI-t felülbírálva az a függvény még mindig szabvány C ABI-t használ? (Nyilván nem.)
- miért hiszed, hogy a lefordított program "az elvárt eredmény" és hogy egyáltalán működőképes? (Nem az, megírtam nem is egyszer, hogy mi a baj vele.)
- miért hazudtad, hogy csak az egy darab prototípus sorral generáltál kódot? (Nyilván nem.)
- miért hazudtad, hogy lefordul és próbáltad meg letagadni, hogy hibát dob a gcc kapcsolók nélkül?
Ha tisztázni akarod a neved, akkor csak simán válaszolj a feltett kérdésekre!