ca65 [integer subtrahieren]

Es gibt 3 Antworten in diesem Thema, welches 668 mal aufgerufen wurde. Der letzte Beitrag (18. Oktober 2018 um 14:09) ist von Vernunftmensch.

  • Wie mache ich daraus ein Macro, das vorher wieviel auf <256 überprüft und dann entsprechend die richtige Variante einbaut?

  • Wie mache ich daraus ein Macro, das vorher wieviel auf <256 überprüft und dann entsprechend die richtige Variante einbaut?

    Mit IF/ELSE/ENDIF? Geht natürlich nur, wenn die Zahl nicht von Vorwärtsreferenzen abhängt.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • nebenbei bemerkt:

    POINTER_minuswenig <- wtf?

    Entscheide dich doch für EINE Sprache. Alles in deutsch wäre gerade noch verkraftbar, alles in englisch zumindest bei mir stark bevorzugt -- so jedenfalls "holpert" es nur gewaltig beim lesen dieses Codes. Irgendwas wie WORD_sub_word und WORD_sub_byte wäre direkt verständlich und würde nicht unnötigerweise den ersten Operanden als Pointer klassifizieren -- das Makro passt ja auch für andere 16bit-Werte.

    Dann kannst noch sowas dazubauen:

    Code
    .macro WORD_sub addr, val
            .if val > $ff
                    WORD_sub_word addr, val
            .else
                    WORD_sub_byte addr, val
            .endif
    .endmacro

    Ob es überhaupt sinnvoll ist, für sowas ein Makro zu bauen, steht wieder auf einem anderen Blatt. Es gibt z.B. immer wieder Situationen, in denen man sich das SEC sparen kann, weil man den Status von Carry vorher kennt.