Forth http://fforum.winglion.ru/ |
|
m3forth - форт для ARM Cortex-M3 http://fforum.winglion.ru/viewtopic.php?f=39&t=2952 |
Страница 3 из 5 |
Автор: | Ilya [ Вс ноя 03, 2013 22:48 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Mihail писал(а): в паре мест у меня получше .............. Сорри, но ИМХО: для неофита лучше тот ФОРТ - у которого подробнее документация В этом плане молодцы "буржуины": win32Forth, Amforth, ... Понятно, что не все смогут осилить исходники spf4 (правда есть исключения: очень хорошую док-цию делал тов. ~yz для своих либ). Сравните документацию (почти) любого "буржуинского" ФОРТ-а и "документацию" все-Российского ФОРТА spf4!!! Такое ощущение, что ФОРТ стал с родни "массонскому ложе" - очень мало информации и велик порог вхождения. Жалко! |
Автор: | Hishnik [ Вс ноя 03, 2013 23:01 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Ilya писал(а): Такое ощущение, что ФОРТ стал с родни "массонскому ложе" - очень мало информации и велик порог вхождения. Жалко! Я бы расширил тезис - не только документация, но и активное разъяснение, как, почему и зачем все это пишется. |
Автор: | oco [ Пн ноя 04, 2013 13:23 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Mihail писал(а): в паре мест у меня получше да, согласен Mihail писал(а): Оптимизатор лучше делать полностью на уровне машинных кодов. лучше на уровне машинных кодов пройтись после обычной оптимизации |
Автор: | Mihail [ Вт ноя 05, 2013 11:07 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
oco писал(а): лучше на уровне машинных кодов пройтись после обычной оптимизации Обычной это какой? Чем лучше? Оптимизация уровне машинных кодов перекрывает любые другие. |
Автор: | Hishnik [ Вт ноя 05, 2013 13:23 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Mihail писал(а): Оптимизация уровне машинных кодов перекрывает любые другие. Дано: программа, упорядочивающая содержимое массива. В исходном виде упорядочивание происходит следующим образом массив перемешивается генератором случайных чисел, затем проверяется, стали ли числа упорядоченными. Каким образом эту программу можно оптимизировать на уровне машинных кодов с перекрытием любых других способов? |
Автор: | Mihail [ Вт ноя 05, 2013 14:11 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Хищник писал(а): Дано: программа, упорядочивающая содержимое массива. Недосуг мне писать упорядочивающие программы. Тем более, что не уверен в понимании ТЗ. Приведи в качестве примера уже готовый исходный код (желательно небольшой). Тогда посмотрим, как с ним разберется оптимизатор. |
Автор: | Hishnik [ Вт ноя 05, 2013 14:27 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Mihail писал(а): Хищник писал(а): Дано: программа, упорядочивающая содержимое массива. Недосуг мне писать упорядочивающие программы. Тем более, что не уверен в понимании ТЗ. Приведи в качестве примера уже готовый исходный код (желательно небольшой). Тогда посмотрим, как с ним разберется оптимизатор. Бесподобно! Я всегда оставляю некоторую вероятность того, что ты все-таки захочешь сдвинуться с мертвой точки, но сообщение было в основном иллюстрацией к вопросу "почему оптимизация в машинных кодах не является лучшей из возможных". |
Автор: | Mihail [ Вт ноя 05, 2013 17:36 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Хищник писал(а): почему оптимизация в машинных кодах не является лучшей из возможных За исключением типов входных параметров, программа в машинных кодах содержит в себе всю информацию необходимую оптимизатору. Т.о. необходимости в промежуточном представлении программы нет. Речь может идти только о целесообразности. |
Автор: | Hishnik [ Вт ноя 05, 2013 18:16 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Хорошо, вот код. Код: : SOLVE 1000000000 0 DO 2 PICK I DUP * * 2 PICK I * + 1 PICK + 0 = IF I . " является корнем квадратного уравнения" PRINT THEN LOOP DROP DROP DROP ; 1 2 -3 SOLVE Оптимизировать это надо именно в машинных кодах? |
Автор: | Mihail [ Вт ноя 05, 2013 18:42 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Оптимизатор специально для примера не подправлял. Занимает 4676 байт исходников. Код: : SOLVE 10001280 B500 PUSH {R14} 1000000000 0 DO 10001282 F844 1D04 STR.W R1, [R4, #-4]! 10001286 F64C 2100 MOVW R1, #51712 ; 0xCA00 1000128A F6C3 319A MOVT R1, #15258 ; 0x3B9A 1000128E F844 1D04 STR.W R1, [R4, #-4]! 10001292 2100 MOVS R1, #0 10001294 F7FF FAE8 BL 10000868 ( (DO) ) 2 PICK I DUP * * 10001298 F844 1D04 STR.W R1, [R4, #-4]! 1000129C 2102 MOVS R1, #2 1000129E F854 1021 LDR.W R1, [R4, R1, lsl #2] 100012A2 F844 1D04 STR.W R1, [R4, #-4]! 100012A6 9900 LDR R1, [SP, #0] 100012A8 F844 1D04 STR.W R1, [R4, #-4]! 100012AC CC01 LDMIA R4!, {R0} 100012AE FB00 F101 mul.w R1, R0, R1 100012B2 CC01 LDMIA R4!, {R0} 100012B4 FB00 F101 mul.w R1, R0, R1 2 PICK I * + 100012B8 F844 1D04 STR.W R1, [R4, #-4]! 100012BC 2102 MOVS R1, #2 100012BE F854 1021 LDR.W R1, [R4, R1, lsl #2] 100012C2 4608 MOV R0, R1 100012C4 9900 LDR R1, [SP, #0] 100012C6 FB00 F101 mul.w R1, R0, R1 100012CA CC01 LDMIA R4!, {R0} 100012CC 1841 ADDS R1, R0, R1 1 PICK + 100012CE F844 1D04 STR.W R1, [R4, #-4]! 100012D2 2101 MOVS R1, #1 100012D4 F854 1021 LDR.W R1, [R4, R1, lsl #2] 100012D8 CC01 LDMIA R4!, {R0} 100012DA 1841 ADDS R1, R0, R1 0 = IF I H. THEN 100012DC 4608 MOV R0, R1 100012DE 2100 MOVS R1, #0 100012E0 4041 EORS R1, R0 100012E2 3901 SUBS R1, #1 100012E4 4189 SBCS R1, R1 100012E6 4608 MOV R0, R1 100012E8 CC02 LDMIA R4!, {R1} 100012EA B900 CBNZ R0, 100012EE 100012EC E004 B.N 100012F8 100012EE F844 1D04 STR.W R1, [R4, #-4]! 100012F2 9900 LDR R1, [SP, #0] 100012F4 F7FF FE5C BL 10000FB0 ( H. ) LOOP 100012F8 F7FF FAC4 BL 10000884 ( (LOOP) ) 100012FC 0064 LSLS R4, R4, #1 DROP DROP DROP 100012FE CC02 LDMIA R4!, {R1} 10001300 CC02 LDMIA R4!, {R1} 10001302 CC02 LDMIA R4!, {R1} ; 10001304 BD00 POP {R15} Кто даст лучшее соотношения качество оптимизации к размеру оптимизатора? |
Автор: | Hishnik [ Вт ноя 05, 2013 18:57 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Mihail писал(а): Оптимизатор специально для примера не подправлял. Занимает 4676 байт исходников. Нет слов!!! Михаил, а тебя в школе учили решать квадратное уравнение именно методом перебора вариантов? |
Автор: | oco [ Вт ноя 05, 2013 20:08 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Код: : SOLVE
1000000000 0 DO cde: f847 6d04 str.w r6, [r7, #-4]! ce2: f64c 2600 movw r6, #51712 ; 0xca00 ce6: f6c3 369a movt r6, #15258 ; 0x3b9a cea: f847 6d04 str.w r6, [r7, #-4]! cee: 2600 movs r6, #0 cf0: f7ff fb4a bl 388 <(DO)> 2 PICK I DUP * * cf4: f847 6d04 str.w r6, [r7, #-4]! cf8: 68be ldr r6, [r7, #8] cfa: f7ff fb65 bl 3c8 <I> cfe: f847 6d04 str.w r6, [r7, #-4]! d02: cf01 ldmia r7!, {r0} d04: 4346 muls r6, r0 d06: cf01 ldmia r7!, {r0} d08: 4346 muls r6, r0 2 PICK I * + d0a: f847 6d04 str.w r6, [r7, #-4]! d0e: 68be ldr r6, [r7, #8] d10: f7ff fb5a bl 3c8 <I> d14: cf01 ldmia r7!, {r0} d16: 4346 muls r6, r0 d18: cf01 ldmia r7!, {r0} d1a: 4406 add r6, r0 1 PICK + d1c: f847 6d04 str.w r6, [r7, #-4]! d20: 687e ldr r6, [r7, #4] d22: cf01 ldmia r7!, {r0} d24: 4406 add r6, r0 0 = IF I . THEN d26: 2e00 cmp r6, #0 d28: cf40 ldmia r7!, {r6} d2a: d103 bne.n d34 <SOLVE+0x58> d2c: f7ff fb4c bl 3c8 <I> d30: f7ff fee4 bl afc <.> LOOP d34: f7ff fb3b bl 3ae <(LOOP)> d38: d7dc bvc.n cf4 <SOLVE+0x18> DROP DROP DROP d3a: cf41 ldmia r7!, {r0, r6} d3c: cf40 ldmia r7!, {r6} d3e: bd00 pop {pc} |
Автор: | Hishnik [ Вт ноя 05, 2013 20:10 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Народ, да вы издеваетесь, что ли? Срочно на ithappens - как фортеры оптимизируют решение квадратного уравнения ПЕРЕБОРОМ!!! |
Автор: | oco [ Вт ноя 05, 2013 20:12 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Mihail писал(а): oco писал(а): лучше на уровне машинных кодов пройтись после обычной оптимизации Обычной это какой? Чем лучше? Оптимизация уровне машинных кодов перекрывает любые другие. Я имел в виду ту, что я использую - замена наборов слов на их оптимизированные эквиваленты |
Автор: | oco [ Вт ноя 05, 2013 20:12 ] |
Заголовок сообщения: | Re: m3forth - форт для ARM Cortex-M3 |
Хищник писал(а): Народ, да вы издеваетесь, что ли? Срочно на ithappens - как фортеры оптимизируют решение квадратного уравнения ПЕРЕБОРОМ!!! Интересно было натравить мой оптимизатор на код и сравнить с оптимизатором Михаила |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |