Computed gotos on Reddit
Dmitry Olshansky
dmitry.olsh at gmail.com
Wed Jul 25 04:26:47 PDT 2012
On 25-Jul-12 15:14, Don Clugston wrote:
> 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.
Looks neat. I'd more then willing to test how it affects my tiny VM in
std.regex.
--
Dmitry Olshansky
More information about the Digitalmars-d
mailing list