Computed gotos on Reddit

Walter Bright newshound2 at digitalmars.com
Wed Jul 25 03:11:42 PDT 2012


On 7/25/2012 12:51 AM, Don Clugston wrote:
> so that there is no lookup table, just a multiply.

Rethinking your idea a bit...

Suppose the switch jump_address[] array was really an array of hardcoded jmp 
instructions, 5 bytes each:

   jmp_table:
     jmp Lcase1;
     jmp Lcase2;
     jmp Lcase3;
     ...

and then the switch(EBX) would be:

     lea EAX,jmp_table[EBX][EBX*4]
     jmp EAX

is that kick-ass or what?

(There'd be some additional complication for PIC code.)


More information about the Digitalmars-d mailing list