[fpc-devel] Optimization theory
Martin
fpc at mfriebe.de
Mon Jun 25 12:18:56 CEST 2018
On 25/06/2018 05:23, J. Gareth Moreton wrote:
> Actually you're right - that is the fastest method (it's written O(1),
> by the way, if it doesn't depend on n). The drawback is that the
> large majority of instructions don't have such an optimisation
> procedure, so the table would be extremely sparse. There are 1,109
> individual instructions on x86 that FPC currently supports. Come to
> think of it, even that is not too bad as far as memory goes - you're
> looking at 8,872 bytes on i386 (4 bytes for the instruction and 4
> bytes for a pointer) and 17,744 bytes on x86-64 (8 bytes for each
> field), both are potentially cacheable on the CPU hence won't be too
> costly in regards to looking it up. Not sure why I overlooked that
> one. Thanks Martin.
While probably not worth it, but if you want to save memory (and only
few entries have data): Use 2 maps:
map1: array[opcode] of byte; // I do not know how efficient reading
bytes is....
maps the (hopefully fewer than 255 active entries)
map2: array[byte] of codepointer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180625/b1d5e18e/attachment.html>
More information about the fpc-devel
mailing list