Beiträge von Claus im Thema „Intelligentes Makro-Inlining beim ca65“

    Hmja. Ich habe das gleiche einmal gemacht, allerdings in Kickassembler, sogar noch furchtbar viel intelligenter mit verschiedenen Implementierungen der Funktionen, die abhängig von den Makro-Parametern automatisch ausgewählt werden (man konnte global angeben, wie weit man nach Speicher oder nach Zyklen optimieren will). Ob es in ca65 auch ginge, weiß ich nicht. Was ich aber weiß, ist dass ich diese tolle Makro-Library am Ende NIE benutzt habe! Ich habe mich nämlich dabei ertappt, dass ich öfter mal geschaut habe, was denn am Ende für Code erzeugt wurde (inline oder nicht, welche Implementierung etc.), um zu wissen was das Programm denn nun wirklich macht. Lustigerweise kann es auch unerwartete Effekte geben, wenn man z.B. das Makro in einem Raster-IRQ verwendet und plötzlich mehr oder weniger Zyklen verbraucht werden, weil man an einer ganz anderen Stelle des Programm das selbe Makro noch einmal verwenden will.

    Unter dem Strich habe ich einen Haufen Arbeit hineininvestiert und was ich heute damit mache ist dass ich die Implementierungen aus dieser Library herauskopiere und explizit im Sourcecode verwende ;( .

    Ich will Dir den Mut nicht nehmen, aber die allermeisten fortgeschrittenen Assembler-Programmierer am C64 sind nach meiner Erfahrung zu dem Schluss gekommen, dass Makros abgesehen von ganz trivialen Dingen mehr schaden als nutzen...