Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #52233
| From | anton@mips.complang.tuwien.ac.at (Anton Ertl) |
|---|---|
| Newsgroups | comp.lang.forth |
| Subject | Re: 1 /STRING vs SNIP |
| Date | 2016-10-27 09:42 +0000 |
| Organization | Institut fuer Computersprachen, Technische Universitaet Wien |
| Message-ID | <2016Oct27.114220@mips.complang.tuwien.ac.at> (permalink) |
| References | <cf8661ca-df10-4db9-ac20-4694db5ca04b@googlegroups.com> <2016Oct19.095231@mips.complang.tuwien.ac.at> <b8b685f8-7365-4dfa-b632-2764bf46932f@googlegroups.com> |
foxaudioresearch@gmail.com writes:
>On Wednesday, October 19, 2016 at 3:59:33 AM UTC-4, Anton Ertl wrote:
>> foxaudioresearch@gmail.com writes:
>> >I noticed a lot of code uses the phrase 1 /STRING so I made a word I call SNIP.
>> >
>> >: snip ( addr len -- addr' len' ) 1- swap 1+ swap ;
>>
>> 63 occurences "1 /string" in 62393 lines of code. Too little IMO for
>> having to remember yet another word.
>>
>> >It's not rocket science but in my ITC system SNIP was 3 times faster than
>> >1 /STRING.
>>
>> In VFX:
>>
>> VFX Forth for Linux IA32 Version: 4.72 [build 0555]
>> : snip 1- swap 1+ swap ; ok
>> : foo1 snip ; ok
>> : foo2 1 /string ; ok
>> see foo1
>> FOO1
>> ( 080C0AB0 4B ) DEC EBX
>> ( 080C0AB1 8B5500 ) MOV EDX, [EBP]
>> ( 080C0AB4 42 ) INC EDX
>> ( 080C0AB5 895500 ) MOV [EBP], EDX
>> ( 080C0AB8 C3 ) NEXT,
>> ( 9 bytes, 5 instructions )
>> ok
>> see foo2
>> FOO2
>> ( 080C0AE0 83C3FF ) ADD EBX, -01
>> ( 080C0AE3 8B5500 ) MOV EDX, [EBP]
>> ( 080C0AE6 83C201 ) ADD EDX, 01
>> ( 080C0AE9 895500 ) MOV [EBP], EDX
>> ( 080C0AEC C3 ) NEXT,
>> ( 13 bytes, 5 instructions )
>>
>> Probably same speed as long as the code working set fits in the cache.
...
>Just for fun it's only three instructions on the TMS9900 with TOS in a register.
It can be reduced to two instructions on IA-32, as SwiftForth demonstrates:
see foo2
8083C4F 1 # 0 [EBP] ADD 83450001
8083C53 1 # EBX SUB 83EB01
8083C56 RET C3 ok
Apparently SwiftForth has an optimization rule for n /STRING; whether
this is faster than the VFX code depends on the actual processor. The
SNIP code is bigger and probably slower on SwiftForth, however:
see snip
8083BFF EBX DEC 4B
8083C00 0 [EBP] EAX MOV 8B4500
8083C03 EBX 0 [EBP] MOV 895D00
8083C06 EAX EBX MOV 8BD8
8083C08 EBX INC 43
8083C09 0 [EBP] EAX MOV 8B4500
8083C0C EBX 0 [EBP] MOV 895D00
8083C0F EAX EBX MOV 8BD8
8083C11 RET C3 ok
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: http://www.forth200x.org/forth200x.html
EuroForth 2016: http://www.euroforth.org/ef16/
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
1 /STRING vs SNIP foxaudioresearch@gmail.com - 2016-10-18 19:31 -0700
Re: 1 /STRING vs SNIP Ron Aaron <rambamist@gmail.com> - 2016-10-19 07:24 +0300
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-19 07:52 +0000
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-19 16:58 -0700
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-21 16:01 +1000
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-21 00:51 -0700
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-21 00:57 -0700
Re: 1 /STRING vs SNIP trans <transfire@gmail.com> - 2016-10-21 05:20 -0700
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-22 00:25 +1000
Re: 1 /STRING vs SNIP trans <transfire@gmail.com> - 2016-10-21 09:13 -0700
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-21 16:24 +0000
Re: 1 /STRING vs SNIP albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-10-21 20:06 +0200
Re: 1 /STRING vs SNIP trans <transfire@gmail.com> - 2016-10-21 14:19 -0700
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-22 13:46 +1000
Re: 1 /STRING vs SNIP stephen@mpeforth.com (Stephen Pelc) - 2016-10-22 11:34 +0000
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-22 13:49 +0000
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-24 11:15 +1000
Re: 1 /STRING vs SNIP albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-10-24 03:01 +0200
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-24 13:29 +1000
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-24 11:15 +0000
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-24 19:44 -0700
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-29 11:17 +1000
Re: 1 /STRING vs SNIP Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-10-29 04:09 -0500
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-29 16:44 +0000
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-29 17:11 -0700
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-31 19:11 +1100
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-31 08:47 +0000
Re: 1 /STRING vs SNIP trans <transfire@gmail.com> - 2016-10-21 03:49 -0700
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-22 20:02 -0700
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-22 20:13 -0700
Re: 1 /STRING vs SNIP trans <transfire@gmail.com> - 2016-10-22 21:09 -0700
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-23 18:36 -0700
Re: 1 /STRING vs SNIP alex <alex@rivadpm.com> - 2016-10-27 14:07 +0100
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-27 19:12 -0700
Re: 1 /STRING vs SNIP alex <alex@rivadpm.com> - 2016-10-28 19:39 +0100
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-28 20:26 -0700
Re: 1 /STRING vs SNIP foxaudioresearch@gmail.com - 2016-10-26 19:52 -0700
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-27 09:42 +0000
Re: 1 /STRING vs SNIP foxaudioresearch@gmail.com - 2016-10-27 06:46 -0700
Re: 1 /STRING vs SNIP stephen@mpeforth.com (Stephen Pelc) - 2016-10-28 07:31 +0000
Re: 1 /STRING vs SNIP jim <anon@example.com> - 2016-10-28 11:33 +0100
Re: 1 /STRING vs SNIP jasmijn Bonting <tessa.bonting@gmail.com> - 2016-10-28 04:09 -0700
Re: 1 /STRING vs SNIP stephen@mpeforth.com (Stephen Pelc) - 2016-10-28 12:41 +0000
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-28 16:50 +0000
Re: 1 /STRING vs SNIP Chris Curl <ccurl609@gmail.com> - 2016-10-28 10:59 -0700
Re: 1 /STRING vs SNIP anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-10-29 10:17 +0000
Re: 1 /STRING vs SNIP "HAA" <someone@microsoft.com> - 2016-10-19 20:19 +1000
Re: 1 /STRING vs SNIP foxaudioresearch@gmail.com - 2016-10-19 05:12 -0700
1 /STRING vs SNIP trans <transfire@gmail.com> - 2016-10-21 04:07 -0700
Re: 1 /STRING vs SNIP albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-10-21 15:50 +0200
Re: 1 /STRING vs SNIP hughaguilar96@gmail.com - 2016-10-25 16:38 -0700
Re: 1 /STRING vs SNIP "David N. Williams" <williams@umich.edu> - 2016-10-26 10:50 -0400
Re: 1 /STRING vs SNIP "David N. Williams" <williams@umich.edu> - 2016-10-26 10:53 -0400
Re: 1 /STRING vs SNIP albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-10-26 17:33 +0200
Re: 1 /STRING vs SNIP "David N. Williams" <williams@umich.edu> - 2016-10-27 10:16 -0400
Re: 1 /STRING vs SNIP Doug Hoffman <glidedog@gmail.com> - 2016-10-27 17:01 -0400
Re: 1 /STRING vs SNIP Coos Haak <htrofhc@gmail.com> - 2016-10-27 17:00 +0200
Re: 1 /STRING vs SNIP Hans Bezemer <the.beez.speaks@gmail.com> - 2016-10-22 12:25 +0200
csiph-web