Introspector/GccCpp/tree-dump.c/char class switch

From Wikibooks, open books for an open world
< Introspector‎ | GccCpp
Jump to: navigation, search

If we look at the assembly the switch for the node class, we will see the following :

Block L5[edit]

L5:

        subl    $12, %esp   #,
        leal    -56(%ebp), %eax     #, tmp119
        pushl   %eax     # tmp119
        call    TReftree_code_class::operator char()     #
        addl    $4, %esp    #,
        movsbl  %al,%eax         # tmp120, tmp121
        pushl   %eax     # tmp121
        call    IS_EXPR_CODE_CLASS(char)         #
        addl    $16, %esp   #,
        testb   %al, %al    # tmp122
        je      L21      #,
        subl    $8, %esp    #,
        pushl   -24(%ebp)        # t
        pushl   8(%ebp)  # di
        call    queue_and_dump_type(dump_info*, tree_common*)    #
        addl    $16, %esp   #,
        subl    $12, %esp   #,
        leal    -56(%ebp), %eax     #, tmp132
        pushl   %eax     # tmp132

        call    TReftree_code_class::operator char()     #
        addl    $16, %esp   #,
        movb    %al, -257(%ebp)  #,

        cmpb    $101, -257(%ebp)         #, "e"
        je      L32      #,

Jump to #Block L32 if we are equal to a "e"


        cmpb    $101, -257(%ebp)         #,
        jg      L30      #,

Jump to #Block L30 if we are greater than a "e"



        cmpb    $50, -257(%ebp)  #,
        je      L25      #,

Jump to block #Block L25 if we are equal to a "2"


        cmpb    $50, -257(%ebp)  #, // 2
        jg      L31      #,

Jump to block #Block L31 if we are greater than a "2"


        cmpb    $49, -257(%ebp)  #, // '1'
        je      L23      #, // case '1'
        jmp     L29      #

Jump to block #Block L29 if we have a "1"

Block L31[edit]

L31:
        cmpb    $60, -257(%ebp)  #,
        je      L25      #,
        jmp     L29      #

Jump to #Block L25 if we have a "<" else jump to #Block L29

Block L30[edit]

L30:
        movb    -257(%ebp), %al     #, tmp134
        subl    $114, %eax  #, tmp134
        cmpb    $1, %al     #, tmp134
        ja      L29      #,
        jmp     L32      #\

Subtract "r" from the eax

Jump to #Block L29 Jump Above

Jump to #Block L32 if we are equal to a "e"

Block L29[edit]

Block L32[edit]

Block L25[edit]