Computed gotos on Reddit

Don Clugston dac at nospam.com
Wed Jul 25 04:14:29 PDT 2012


On 25/07/12 12:11, Walter Bright wrote:
> 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.)

Very nice. The jumps in the jump table take effectively zero cycles. 
That looks quite doable.





More information about the Digitalmars-d mailing list