_Loader_

Sep 13, 2003 Last reply: 22 years ago 731 Replies

Hello Eugene!

30 Sep 31 17:44, Eugene Romanov wrote to Alex Kouznetsov:

ER> íÅÎÑ ÔÅpÚÁÀÔ cÍyÔÎÙÅ cÏÍÎÅÎÉÑ, ÞÔÏ ÜÔÏ ÐpÏcÔÏ ÉcÈÏÄÎÙÊ ÁÌÇÏpÉÔÍ ER> cÏÐÔÉÍÉÚÉpÏ×ÁÌcÑ ÇpÁÍÏÔÎÏ. á ÄÏ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÌÀÂÏÍy ÉÎÔÅpÐpÅÔÁÔÏpy - ER> ËÁË ÄÏ ìyÎÙ ÐÅÛËÏÍ. éÂÏ ÎÁ ËÁËÏÊ-ÎÉÂyÄØ "add r0, #15" ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ER> ÂyÄÅÔ ÎÁ×ÅÛÁÎÏ ÎÅËÏÔÏpÏÅ ËÏÌÉÞÅcÔ×Ï ÔÅÌÏÄ×ÉÖÅÎÉÊ ÉÎÔÅpÐpÅÔÁÔÏpÁ. á ER> ÎÁÐÉcÁÔØ ÎÁÔÉ×ÎÙÊ ËÏÄ ÔÁË, ÞÔÏÂÙ ÏÎ ×ÙÐÏÌÎÑÌcÑ ÄÏÌØÛÅ, ÞÅÍ ÔÁËÏÊ ÖÅ ER> ÁÌÇÏpÉÔÍ × ÉÎÔÅpÐpÅÔÁÔÏpÅ - ÜÔÏ ÎÁÄÏ ×ÅcØÍÁ ÐÏcÔÁpÁÔØcÑ...

÷ Ó×ÏÅ ×pÅÍÑ Ñ ÕÐpÁÖÎÑÌÓÑ Ó ïó äåíïó ÎÁ óí-1420. âÙÌ ÎÅËÉÊ ÂÅÎÞÍÁpË ÎÁ ÐpÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ ÎÁ ÆÏpÔpÁÎÅ. ôÁË ×ÏÔ. ëÏÍÐÉÌÑÔÏp æÏpÔpÁÎÁ-77 ÄÁ×ÁÌ ÎÁÔÉ×ÎÙÊ ËÏÄ, ËÏÍÐÉÌÑÔÏp æÏpÔpÁÎÁ-4 ÏÔ Unix v6 - ÉÎÔÅpÐpÅÔÉpÕÅÍÙÊ. ïÄÉÎ É ÔÏÔ ÖÅ ÂÅÎÞÍÁpË ÆÏpÔpÁÎ-77 ËÏÍÐÉÌÉÌ × ÔpÉ pÁÚÁ ÄÏÌØÛÅ É ÄÁ×ÁÌ × pÅÚÕÌØÔÁÔÅ ÚÁÇpÕÚÏÞÎÙÊ ÍÏÄÕÌØ × ÔpÉ pÁÚÁ ÄÌÉÎÎÅÅ. óËÏpÏÓÔØ ÉÓÐÏÌÎÅÎÉÑ Õ ÆÏpÔpÁÎÁ-4 ÂÙÌÁ ÎÁ ÅÄÉÎÉÃÙ ÐpÏÃÅÎÔÏ× ×ÙÛÅ. ðpÉ ÜÔÏÍ, ÍÁÛÉÎÁ ÉÍÅÌÁ ÓÏÐpÏÃÅÓÓÏp É ÏÂÁ ËÏÍÉÌÑÔÏpÁ ×ÙÄÁ×ÁÌÉ ËÏÄ ÐÏÄ ÓÏÐpÏÃÅÓÓÏp. ÷ ÞÅÍ ÄÅÌÏ?

Anatoly

ðÒÉ×ÅÔ ÔÅÂÅ, Anatoly! [...]

AM> ïÄÉÎ É ÔÏÔ ÖÅ ÂÅÎÞÍÁpË ÆÏpÔpÁÎ-77 ËÏÍÐÉÌÉÌ × ÔpÉ pÁÚÁ ÄÏÌØÛÅ É ÄÁ×ÁÌ AM> × pÅÚÕÌØÔÁÔÅ ÚÁÇpÕÚÏÞÎÙÊ ÍÏÄÕÌØ × ÔpÉ pÁÚÁ ÄÌÉÎÎÅÅ. óËÏpÏÓÔØ AM> ÉÓÐÏÌÎÅÎÉÑ Õ ÆÏpÔpÁÎÁ-4 ÂÙÌÁ ÎÁ ÅÄÉÎÉÃÙ ÐpÏÃÅÎÔÏ× ×ÙÛÅ. ðpÉ AM> ÜÔÏÍ, ÍÁÛÉÎÁ ÉÍÅÌÁ ÓÏÐpÏÃÅÓÓÏp É ÏÂÁ ËÏÍÉÌÑÔÏpÁ ×ÙÄÁ×ÁÌÉ ËÏÄ ÐÏÄ AM> ÓÏÐpÏÃÅÓÓÏp.

AM> ÷ ÞÅÍ ÄÅÌÏ?

èpÅÎÏ×ÁÑ ÏÐÔÉÍÉÚÁÃÉÑ × ËÏÍÐÉÌÑÔÏpÅ. ðÏÍÎÉÔcÑ, × cÅpÅÄÉÎÅ 90-È ÐpÏ×ÅÌÉ cpÁ×ÎÅÎÉÅ ÎÁÉÂÏÌÅÅ ÐÏÐyÌÑpÎÙÈ ÔÏÇÄÁ ËÏÍÐÉÌÑÔÏpÏ× ó ÐÏ ÏÐÔÉÍÁÌØÎÏcÔÉ ×ÙÄÁ×ÁÅÍÏÇÏ ËÏÄÁ. ïÄÉÎ ÉÚ ÔÅcÔÏ× ÂÙÌ ÔÉÐÁ:

a = 1; b = a + 1; c = a + b;

Borland C ×ÙÄÁÌ ÐpÉÍÅpÎÏ ÔÁËÏÊ ËÏÄ:

mov [sp+4], 1 mov ax, [sp+4] add ax, 1 mov [sp+6], ax add ax, [sp+4] mov [sp+8], ax

á ÄpyÇÏÊ (TopSpeed ó, ËÁÖÅÔcÑ):

mov ax, 1 mov bx, 2 mov cx, 3

ôÁË ÞÔÏ ×cÅ ÚÁ×ÉcÉÔ ÏÔ ÔÏÇÏ, ËÁË ÎÁÐÉcÁÎ ÎÁÔÉ×ÎÙÊ ËÏÄ. ó y×ÁÖÅÎÉÅÍ, E×ÇÅÎÉÊ. ewg::cats-online.ru

... ËÏÔÑÔ ÐÏ ÏÓÅÎÉ ÓÞÉÔÁÀÔ

Hi Eugene,

Tue Sep 30 2003 17:44, Eugene Romanov wrote to Alex Kouznetsov:

AK>>>> Скорость зависит от того как сделан интерпретатор. PU>>> Hо она никогда не переплюнет скорость работы native кода?! Ж8-) AK>> Встречались сообщения, что вполне может переплюнуть, AK>>

formatting link
Чтобы было понятнее, SPF4 - AK>> это Форт с оптимизацией.

ER> Меня теpзают cмyтные cомнения, что это пpоcто иcходный алгоpитм ER> cоптимизиpовалcя гpамотно. А до нативного кода любомy интеpпpетатоpy - ER> как до Лyны пешком. Ибо на какой-нибyдь "add r0, #15" нативного кода ER> бyдет навешано некотоpое количеcтво телодвижений интеpпpетатоpа.

Это распространенное мнение, но вообще-то оно ошибочно. То есть, для большинства интерпретаторов это так. Но не для всех. Граница между интерпретацией и исполнением нативного кода весьма зыбка и расплывчата, особенно если имеешь дело с Фортом. SPF, о котором идет речь, использует так наз. подпрограммный шитый код. Программа, интерпретируемая им, выглядит примерно так: call DUP call MUL ... и т.д. Так что из "телодвижений интеpпpетатоpа" на каждое слово приходятся только call и ret. "Внутренности" SPF я знаю не очень хорошо, но по-моему при трансляции он инлайнит некоторую часть кода (по крайней мере, литералы и переходы). Если сравнивать это с результатом работы какого-нибудь С компилятора, то особо большой разницы не заметишь. Разве что больше call-ов, и нет манипуляций с фреймами.

Пока, Алексей

Hello, Alex Kouznetsov !

HÉÞÕÔØ.

ïÎÁ-ÔÏ ËÏÎÅÞÎÏ ÚÙÂËÁ, ÎÏ ÅÓÌÉ ÒÅÞØ ÉÄÅÔ Ï ÄÕÒÁËÁÕÓÔÏÊÞÉ×ÏÍ ÓÏÆÔÅ ÄÌÑ ÕÄÁÌÅÎÎÏÇÏ ÁÐÇÒÅÄÁ, ÎÁÐÉÓÁÎÎÏÇÏ ÔÁË, ÞÔÏ ÎÉËÁËÉÅ ÄÅÊÓÔ×ÉÑ × ÎÅÍ ÎÅ ÍÏÇÕÔ ÐÒÉ×ÅÓÔÉ Ë ÐÏÔÅÒÅ ËÏÎÔÒÏÌÑ, ÔÏ ÛÉÔÙÊ ËÏÄ ÎÅ ÐÏÄÈÏÄÉÔ. üÔÏ ÄÏÌÖÅÎ ÂÙÔØ ËÏÄ, ÌÅÖÁÝÉÊ ÎÅ × ÐÒÏÇÒÁÍÍÎÏÊ ÐÁÍÑÔÉ ÐÒÏÃÅÓÓÏÒÁ, Á ÚÎÁÞÉÔ ÛÉÔÙÍ ËÏÄÏÍ ÏÎ ÂÙÔØ ÎÅ ÍÏÖÅÔ.

ôÏ ÅÓÔØ ÌÉÛÎÉÊ call, ret, ÏÂÒÁÝÅÎÉÅ Ë ÐÁÍÑÔÉ (ËÏÎÓÔÁÎÔÁ-ÔÏ ÉÚ ÐÒÅÄÙÄÕÝÅÇÏ ÐÒÉÍÅÒÁ ÓÞÉÔÙ×ÁÅÔÓÑ ×ÍÅÓÔÅ Ó ËÏÍÁÎÄÏÊ, Á ÎÅ ×ÙÔÁÓËÉ×ÁÅÔÓÑ ËÏÓ×ÅÎÎÙÍ ÏÂÒÁÝÅÎÉÅÍ Ë ÏÂßÑ×ÌÅÎÎÏÊ ÓÔÅËÏÍ ÄÁÎÎÙÈ ÏÂÌÁÓÔÉ ïúõ). ðÏÐÕÔÎÏ ÉÍÅÅÍ ÓÂÒÏÓ ËÏÎ×ÅÅÒÁ × ÐÒÏÃÅÓÓÏÒÁÈ ÇÄÅ ÏÎ ÅÓÔØ É ÚÁÍÅÄÌÅÎÉÅ ÂÙÓÔÒÏÄÅÊÓÔ×ÉÑ × ÎÅÓËÏÌØËÏ ÒÁÚ. ëÒÏÍÅ ÔÏÇÏ, ÂÙÓÔÒÏÁÄÒÅÓÕÅÍÙÅ ÒÅÇÉÓÔÒÙ ÏËÁÚÙ×ÁÀÔÓÑ ÐÒÏÓÔÏ ÎÅÉÓÐÏÌØÚÏ×ÁÎÎÙÍÉ.

HÅ ÔÏÌØËÏ, ÎÏ ÄÁÖÅ ÜÔÏ 2 ÌÉÛÎÉÈ ËÏÍÁÎÄÙ ×ÍÅÓÔÏ ÏÄÎÏÊ. HÏ ÄÁÖÅ ÅÓÌÉ ÐÒÅÄÓÔÁ×ÉÔØ ÓÅÂÅ ÁÒÈÉÔÅËÔÕÒÕ, ÄÌÑ ËÏÔÏÒÏÊ ÛÉÔÙÊ ËÏÄ ÎÅ ÓÏÚÄÁÅÔ Ï×ÅÒÈÅÄÁ, ÎÉËÔÏ ×ÅÄØ ÎÅ ÍÅÛÁÅÔ ÅÇÏ ÎÁ ÁÓÓÅÍÂÌÅÒÅ É ÎÁÐÉÓÁÔØ. ðÏÔÏÍÕ ËÁË ÎÉ ËÒÕÔÉ, ÎÏ ÕÔ×ÅÒÖÄÁÔØ, ÞÔÏ ÌÀÂÏÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÂÙÓÔÒÅÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ - ÐÒÏÓÔÏ ÁÂÓÕÒÄ.

ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.
ðÒÉ×ÅÔ ÔÅÂÅ, Alex!

AK> üÔÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÏÅ ÍÎÅÎÉÅ, ÎÏ ×ÏÏÂÝÅ-ÔÏ ÏÎÏ ÏÛÉÂÏÞÎÏ. ôÏ ÅÓÔØ, ÄÌÑ AK> ÂÏÌØÛÉÎÓÔ×Á ÉÎÔÅÒÐÒÅÔÁÔÏÒÏ× ÜÔÏ ÔÁË. HÏ ÎÅ ÄÌÑ ×ÓÅÈ. çÒÁÎÉÃÁ ÍÅÖÄÕ AK> ÉÎÔÅÒÐÒÅÔÁÃÉÅÊ É ÉÓÐÏÌÎÅÎÉÅÍ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ×ÅÓØÍÁ ÚÙÂËÁ É AK> ÒÁÓÐÌÙ×ÞÁÔÁ, ÏÓÏÂÅÎÎÏ ÅÓÌÉ ÉÍÅÅÛØ ÄÅÌÏ Ó æÏÒÔÏÍ.

AK> SPF, Ï ËÏÔÏÒÏÍ ÉÄÅÔ ÒÅÞØ, ÉÓÐÏÌØÚÕÅÔ ÔÁË ÎÁÚ. ÐÏÄÐÒÏÇÒÁÍÍÎÙÊ ÛÉÔÙÊ AK> ËÏÄ. ðÒÏÇÒÁÍÍÁ, ÉÎÔÅÒÐÒÅÔÉÒÕÅÍÁÑ ÉÍ, ×ÙÇÌÑÄÉÔ ÐÒÉÍÅÒÎÏ ÔÁË: AK> call DUP AK> call MUL

üÔÉ "call" - ËÏÍÁÎÄÙ ÐpÏÃÅccÏpÁ ÉÌÉ ×ÉpÔyÁÌØÎÏÊ ÆÏpÔ-ÍÁÛÉÎÙ? åcÌÉ ÐpÏÃÅccÏpÁ, ÔÏ ÍÙ ÉÍÅÅÍ ÄÅÌÏ c ËÏÍÐÉÌÉpÏ×ÁÎÎÏÊ × ÎÁÔÉ×ÎÙÊ ËÏÄ ÐpÏÇpÁÍÍÏÊ. äÁÌÅÅ ÉÄÅÔ ÐpÏcÔÏ cpÁ×ÎÅÎÉÅ ËÁÞÅcÔ×Á ËÏÍÐÉÌÑÔÏpÏ×. åcÌÉ ÖÅ ÜÔÏ - ËÏÍÁÎÄÙ ×ÉpÔyÁÌØÎÏÊ ÍÁÛÉÎÙ, ÔÏ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÎÁÔÉ×ÎÙÊ ËÏÄ ÏËÁÚÁÌcÑ ÍÅÄÌÅÎÎÅÊ, ÎÅÏÂÈÏÄÉÍÏ ÅÄÉÎcÔ×ÅÎÎÏÅ ycÌÏ×ÉÅ: ÐpÏÇpÁÍÍy ÄÌÑ ËÏÍÐÉÌÑÔÏpÁ ÂÅÚ ÍÁÌÅÊÛÉÈ ÚÁÞÁÔËÏ× ÏÐÔÉÍÉÚÁÃÉÉ ÐÉcÁÌ cÔyÄÅÎÔ-Ä×ÏÅÞÎÉË ÐÏ ÁÌÇÏpÉÔÍy, ÐpÉÄyÍÁÎÎÏÍy ÉÍ ÖÅ "ÎÁ yÔpÏ ÐÏcÌÅ". ó y×ÁÖÅÎÉÅÍ, E×ÇÅÎÉÊ. ewg::cats-online.ru

... ËÏÔÑÔ ÐÏ ÏÓÅÎÉ ÓÞÉÔÁÀÔ

Hello, Alex Kouznetsov !

HÅ ÏÞÅÎØ. åÓÌÉ ÔÁ ÐÁÍÑÔØ, × ËÏÔÏÒÏÊ ÌÅÖÉÔ ÐÒÏÇÒÁÍÍÁ, ÄÏÓÔÕÐÎÁ ÎÁ ÉÓÐÏÌÎÅÎÉÅ ËÏÄÁ ÉÚ ÎÅÅ (É ÏÎ ÉÓÐÏÌÎÑÅÔÓÑ ÏÔ ÔÕÄÁ), ÜÔÏ ÕÖÅ ÎÅ ÉÎÔÅÒÐÒÅÔÁÔÏÒ, ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ × ÔÏÍ ÓÍÙÓÌÅ, Ï ËÏÔÏÒÏÍ ÛÌÁ ÒÅÞØ (ÂÅÚÏÐÁÓÎÙÊ ÕÄÁÌÅÎÎÙÊ ÁÐÄÅÊÔ ÓÏÆÔÁ).

äÁ ÍÁÌÏ ÌÉ ÞÔÏ ÞÅÍ ÓÞÉÔÁÅÔÓÑ. ðÏÞÔÉ ×ÓÅÇÄÁ ÏÄÎÏ É ÔÏÖÅ ÍÏÖÎÏ É ÉÎÔÅÒÐÒÅÔÁÔÏÒÏÍ É ËÏÍÐÉÌÑÔÏÒÏÍ ÓÄÅÌÁÔØ. HÅÌØÚÑ, ÅÓÌÉ ÉÎÔÅÒÐÒÅÔÉÒÕÅÍÁÑ ÐÒÏÇÒÁÍÍÁ ÍÏÖÅÔ ÓÁÍÁ Ó×ÏÊ ÔÅËÓÔ ÍÅÎÑÔØ (ÉÌÉ ÎÅ ÓÁÍÁ). HÏ ÔÏÇÄÁ ÌÀÂÁÑ ÐÒÅËÏÍÐÉÌÑÃÉÑ, ÄÁÖÅ ÔÁËÁÑ, ËÁË × ÂÏÌØÛÉÎÓÔ×Å ÂÅÊÓÉËÏ× ÕÖÅ ÎÅ ÉÎÔÅÒÐÒÅÔÁÃÉÑ.

é ×ÓÅ ÒÁ×ÎÏ ÎÅ ÂÙÓÔÒÅÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ, ÞÔÏ ÐÏ-ÍÏÅÍÕ ÓÏ×ÅÒÛÅÎÎÏ ÏÞÅ×ÉÄÎÏ. ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.

Hi Eugene,

Wed Oct 01 2003 15:30, Eugene Romanov wrote to Alex Kouznetsov:

AK>> Это распространенное мнение, но вообще-то оно ошибочно. То есть, для AK>> большинства интерпретаторов это так. Hо не для всех. Граница между AK>> интерпретацией и исполнением нативного кода весьма зыбка и AK>> расплывчата, особенно если имеешь дело с Фортом.

AK>> SPF, о котором идет речь, использует так наз. подпрограммный шитый AK>> код. Программа, интерпретируемая им, выглядит примерно так: AK>> call DUP AK>> call MUL

ER> Эти "call" - команды пpоцеccоpа или виpтyальной фоpт-машины? Еcли ER> пpоцеccоpа, то мы имеем дело c компилиpованной в нативный код пpогpаммой. ER> Далее идет пpоcто cpавнение качеcтва компилятоpов.

Это команды процессора. Я же писал, граница между нативным кодом и нинтерпретируемым очень зыбкая. Для подпрограммного шитого кода "интерпретатор" - это сам процессор, с его call и ret, а вся Форт-система может быть представлена как определенным образом организованный набор подпрограмм. Тем не менее, Форт традиционно считается интерпретируемым языком.

Изначально ведь речь шла о том, насколько быстрым может быть интерпретатор. Я привел пример - практически он может быть сколь угодно быстрым.

Пока, Алексей

Hello, Artem Kamburov !

HÁ ÆÏÒÔÅ ÐÒÏÃÅÓÓÏÒ ÍÏÖÅÔ ÏÂÏÇÎÁÔØ ÓÁÍ ÓÅÂÑ?

üÔÏ ×ÅÒÎÏ ÄÁÖÅ ÅÓÌÉ ÜÔÏ ÆÏÒÔ-ÐÒÏÃÅÓÓÏÒ ÄÌÑ ÌÀÂÏÇÏ ÐÒÏÃÅÓÓÏÒÁ.

ïÂÑÚÁÔÅÌØÎÏ.

åÓÌÉ ÏÎ ÂÙÓÔÒÅÅ (×Ï ÞÔÏ Ñ ÎÅ ×ÅÒÀ), ÔÏ ÁÓÍ × ÒÕËÉ - É ÐÉÛÉ ÓÅÂÅ ÛÉÔÙÊ ËÏÄ. èÏÔÑ ÅÓÌÉ ÁÌÇÏÒÉÔÍ (ËÒÉÔÉÞÎÙÊ ÃÉËÌ) ×ÌÁÚÉÔ × ËÜÛ × ×ÉÄÅ ÛÉÔÏÇÏ ËÏÄÁ, ÔÏ ÂÅÚ ÌÉÛÎÉÈ call/ret ÏÎ É ÐÏÄÁ×ÎÏ ×ÌÅÚÅÔ. ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.
÷ÓÅÍ ÐÒÉ×ÅÔ.

èÍÍ.... óÕÄÑ ÐÏ ÏÐÙÔÕ ÒÁÂÏÔÙ Ó ÐÒÏÇÒÁÍÍÁÍÉ ÎÁÐÉÓÁÎÎÙÍÉ Ñ×ÎÏ ÎÅ ÎÁ æÏÒÔÅ ÕÔ×ÅÒÖÄÅÎÉÅ × ÁÂÓÕÒÄÎÏÓÔÉ ÏÞÅÎØ ÓÏÍÎÉÔÅÌØÎÏ. ó ÎÅËÏÔÏÒÙÈ ÐÏÒ, ÑÒÌÙË "ÔÏÒÍÏÚ" ÐÒÉËÌÅÉÌÓÑ Ë ÏÞÅÎØ ÍÎÏÇÉÍ ÐÒÏÇÒÁÍÎÙÍ ÐÒÏÄÕËÔÁÍ ÎÅ ÓÍÏÔÒÑ ÎÁ ÐÏÑ×ÌÅÎÉÅ ÏÐÔÉÍÉÚÁÃÉÉ × ÏÞÅÎØ ÍÎÏÇÉÈ ËÏÍÐÉÌÑÔÏÒÁÈ. é Ñ ÏÞÅÎØ ÓÉÌØÎÏ ÓÏÍÎÅ×ÁÀÓØ, ÞÔÏ ÏÎÉ ×ÓÅ ÐÉÓÁÌÉÓØ ÍÁÌÏÇÒÁÍÏÔÎÙÍÉ ÐÒÏÇÒÁÍÍÉÓÔÁÍÉ ÎÁ âÅÊÓÉËÅ. ôÁË ÎÅ ËÁÖÅÔÓÑ-ÌÉ ÷ÁÍ, ÞÔÏ ÏÐÔÉÍÉÚÉÒÕÅÔÓÑ ÞÔÏ-ÔÏ ÎÅ ÔÏ?
äÌÑ ÏÄÎÏËÒÉÓÔÁÌÏË ÜÔÏ ×ÅÒÎÏ (ÅÓÌÉ ÜÔÏ ÎÅ æÏÒÔ-ÐÒÏÃÅÓÓÏÒ), Á ÄÌÑ ÓÏ×ÒÅÍÅÎÎÙÈ È86 (Ó ËÏÎ×ÅÊÅÒÏÍ, ËÅÛÁÍÉ, ÏÐÅÒÁÔÉ×ËÏÊ É ×ÉÒÔÕÁÌØÎÏÊ ÐÁÍÑÔØÀ) ÎÅ ÏÂÑÚÁÔÅÌØÎÏ. ó×ÑÚÁÎÏ ÜÔÏ Ó ÔÅÍ, ÞÔÏ × È86-È ÓÉÓÔÅÍÁÈ ÐÒÏÃÅÓÓÏÒ (ËÏÔÏÒÙÊ ÎÁÔÉ×ÎÙÊ ËÏÄ ×ÙÐÏÌÎÑÅÔ ÂÙÓÔÒÅÅ) ÎÅ Ñ×ÌÑÅÔÓÑ ÓÁÍÙÍ ÍÅÄÌÅÎÎÙÍ Ú×ÅÎÏÍ - ÏÞÅÎØ ÍÎÏÇÏ ×ÒÅÍÅÎÉ ÔÒÁÔÉÔÓÑ ÎÁ ÚÁÇÒÕÚËÕ ÉÚ ÐÁÍÑÔÉ. ôÁË, ÞÔÏ ÅÓÌÉ ÛÉÔÙÊ ËÏÄ ÐÏ ÏÂßÅÍÕ ÂÕÄÅÔ × ÄÅÓÑÔØ ÒÁÚ ËÏÒÏÞÅ ÁÎÁÌÏÇÉÞÎÏÇÏ ÎÁÔÉ×ÎÏÇÏ, ÐÏÞÔÉ ÎÁ×ÅÒÎÑËÁ ÏÎ ÂÕÄÅÔ É ÂÙÓÔÒÅÅ (ÎÅ ÓÍÏÔÒÑ ÎÁ ÚÁÄÅÒÖËÉ ÐÒÉ ÁÄÒÅÓÎÏÊ ÉÎÔÅÒÐÒÅÔÁÃÉÉ). áÒÔÅÍëáä
30-Sep-03 16:44 Eugene Romanov wrote to Alex Kouznetsov:

AK>>>> Скорость зависит от того как сделан интерпретатор. PU>>> Hо она никогда не переплюнет скорость работы native кода?! Ж8-) AK>> Встречались сообщения, что вполне может переплюнуть, AK>>

formatting link
Чтобы было понятнее, SPF4 - AK>> это Форт с оптимизацией.

ER> Меня теpзают cмyтные cомнения, что это пpоcто иcходный алгоpитм ER> cоптимизиpовалcя гpамотно. А до нативного кода любомy интеpпpетатоpy - ER> как до ER> Лyны пешком. Ибо на какой-нибyдь "add r0, #15" нативного кода бyдет ER> навешано ER> некотоpое количеcтво телодвижений интеpпpетатоpа. А напиcать нативный Да нет. Форт с оптимизацией "разворачивает" слова в машкод. Пользуясь С-шной терминологией, "инлайнит" все функции и дальше оптимизирует машкод. Но тут два момента:

1) тут уже надо "помахать ручкой" компактности кода, присущей интерпретаторам. Адепты форта обычно "забывают" об этом, и умудряются одновремённо говорить "самый компактный" и "самый быстрый". Думаю, впрочем, что они такие же фортеры, как "линуксоиды", которые только и умеют кричать Win must die, а сами линукса не знают.

2) Я согласен, что такой оптимизированный код может быть быстрее, чем программа, сгенерённая плохим C-компилятором или написанная плохим ASM-программистом. Но те же адепты почему-то об этом ("плохим") тоже забывают.

Ну и в любом случае - какой бы оптимизирующий форт мы не взяли, если форт-программу ему на вход писал плохой фортер, то он (опт.форт) её не вытянет. А все мы знаем, что при большом желании сравнить тайд с "другим порошком" можно так, что станет странно, почему производители "другого порошка" ещё не повесились.

wbr,

Hi Oleksandr,

Wed Oct 01 2003 22:20, Oleksandr Redchuk wrote to Eugene Romanov:

AK>>>>> Скорость зависит от того как сделан интерпретатор. PU>>>> Hо она никогда не переплюнет скорость работы native кода?! Ж8-) AK>>> Встречались сообщения, что вполне может переплюнуть, AK>>>

formatting link
Чтобы было понятнее, SPF4 - AK>>> это Форт с оптимизацией.

ER>> Меня теpзают cмyтные cомнения, что это пpоcто иcходный алгоpитм ER>> cоптимизиpовалcя гpамотно. А до нативного кода любомy интеpпpетатоpy - ER>> как до ER>> Лyны пешком. Ибо на какой-нибyдь "add r0, #15" нативного кода бyдет ER>> навешано ER>> некотоpое количеcтво телодвижений интеpпpетатоpа. А напиcать нативный

OR> Да нет. OR> Форт с оптимизацией "разворачивает" слова в машкод. OR> Пользуясь С-шной терминологией, "инлайнит" все функции и дальше OR> оптимизирует машкод.

Нет, насколько мне известно, именно так никто не делает. Тела функций (Форт-слов) не инлайнятся, для подпрограммного шитого кода они остаются быть подпрограммами. Инлайнятся более мелкие элементы, как то литералы, переходы и возвраты. Оптимизация при (любой, не только в Фортах) трансляции осуществляется гораздо раньше, еще до того как получился исполняемый код. Машкод всерьез никто не оптимизирует, т.к. геморроя не оберешься, а результаты мизерные. Неэффективно.

Пока, Алексей

ðÒÉ×ÅÔ ÔÅÂÅ, Oleksandr!

OR> æÏÒÔ Ó ÏÐÔÉÍÉÚÁÃÉÅÊ "ÒÁÚ×ÏÒÁÞÉ×ÁÅÔ" ÓÌÏ×Á × ÍÁÛËÏÄ. OR> ðÏÌØÚÕÑÓØ ó-ÛÎÏÊ ÔÅÒÍÉÎÏÌÏÇÉÅÊ, "ÉÎÌÁÊÎÉÔ" ×ÓÅ ÆÕÎËÃÉÉ É ÄÁÌØÛÅ OR> ÏÐÔÉÍÉÚÉÒÕÅÔ ÍÁÛËÏÄ.

õÇy. ôÏÌØËÏ ÜÔÏ yÖÅ cËÏpÅÅ ËÏÍÐÉÌÑÔÏp ÐÏÌyÞÁÅÔcÑ, pÁÚ ÎÁ ×ÙÈÏÄÅ ÎÁÔÉ×ÝÉÎÁ cÐÌÏÛÎÁÑ.

OR> HÏ ÔÕÔ Ä×Á ÍÏÍÅÎÔÁ:

[...]

OR> HÕ É × ÌÀÂÏÍ ÓÌÕÞÁÅ - ËÁËÏÊ ÂÙ ÏÐÔÉÍÉÚÉÒÕÀÝÉÊ ÆÏÒÔ ÍÙ ÎÅ OR> ×ÚÑÌÉ, ÅÓÌÉ ÆÏÒÔ-ÐÒÏÇÒÁÍÍÕ ÅÍÕ ÎÁ ×ÈÏÄ ÐÉÓÁÌ ÐÌÏÈÏÊ ÆÏÒÔÅÒ, ÔÏ ÏÎ OR> (ÏÐÔ.ÆÏÒÔ) ţ ÎÅ ×ÙÔÑÎÅÔ. á ×ÓÅ ÍÙ ÚÎÁÅÍ, ÞÔÏ ÐÒÉ ÂÏÌØÛÏÍ ÖÅÌÁÎÉÉ OR> ÓÒÁ×ÎÉÔØ ÔÁÊÄ Ó "ÄÒÕÇÉÍ ÐÏÒÏÛËÏÍ" ÍÏÖÎÏ ÔÁË, ÞÔÏ ÓÔÁÎÅÔ ÓÔÒÁÎÎÏ, OR> ÐÏÞÅÍÕ ÐÒÏÉÚ×ÏÄÉÔÅÌÉ "ÄÒÕÇÏÇÏ ÐÏÒÏÛËÁ" Åݣ ÎÅ ÐÏ×ÅÓÉÌÉÓØ.

÷Ï-×Ï. éÌÉ ÅcÌÉ ÁÌÇÏpÉÔÍ ×ÙÂpÁÎ ÂyÄÅÔ ÎÅyÄÁÞÎÙÊ. ëcÔÁÔÉ, ÎÁ ÜÔy ÔÅÍy: "ÄÁ ÍÏÊ ÉÎÔÅpÐpÅÔÁÔÏp p×ÅÔ ÁccÅÍÂÌÅp ÐÏ cËÏpÏcÔÉ" ÚÁ ÐÏcÌÅÄÎÉÊ ÇÏÄ yÖÅ ÄÏ×ÏÄÉÌÏcØ cÐÏpÉÔØ. ÷ ÏÆÆÌÁÊÎÅ. é ËÁË ÎÉ cÔpÁÎÎÏ - c ÆÏpÔÅpÏÍ ÖÅ. ðÏÈÏÖÅ, ÏÞÅpÅÄÎÁÑ "c×ÑÝÅÎÎÁÑ ×ÏÊÎÁ" ÇpÑÄÅÔ. ó y×ÁÖÅÎÉÅÍ, E×ÇÅÎÉÊ. ewg::cats-online.ru

... ËÏÔÑÔ ÐÏ ÏÓÅÎÉ ÓÞÉÔÁÀÔ

Hi Eugene,

Thu Oct 02 2003 10:02, Eugene Romanov wrote to Oleksandr Redchuk:

ER> Только это yже cкоpее компилятоp полyчаетcя, pаз на выходе нативщина ER> cплошная.

Для информациии: в состав Форта обычно входят два интерпретатора ("наружный" и "внутренний") и компилятор. В большинстве современных интерпретирующих систем исходник сначала компилируется. Интерпретируется же байт-код, т.е. скомпилированный код. Форт в этом смысле не исключение, просто у него все в одном флаконе, и компилятор, и интерпретатор(ы). Кстати, его компилятор исполняется, ессно, путем интерпретации ;-)

OR>> Hу и в любом случае - какой бы оптимизирующий форт мы не OR>> взяли, если форт-программу ему на вход писал плохой фортер, то он OR>> (опт.форт) её не вытянет. А все мы знаем, что при большом желании OR>> сравнить тайд с "другим порошком" можно так, что станет странно, OR>> почему производители "другого порошка" ещё не повесились.

ER> Во-во. Или еcли алгоpитм выбpан бyдет неyдачный. ER> Кcтати, на этy темy: "да мой интеpпpетатоp pвет аccемблеp по cкоpоcти" за ER> поcледний год yже доводилоcь cпоpить. В оффлайне. И как ни cтpанно - c ER> фоpтеpом же. Похоже, очеpедная "cвященная война" гpядет.

Хм... Тогда начнем, пожалуй ;-) Значит, то что проги, скомпилированные O'Caml или VC7, оказались быстрее ассемблерной - никого не удивило? Это показалось правдоподобным? А то что Форт "втиснулся" между - все сразу заворчали, что этого не может быть, поскольку "быстрей ассемблера не напишешь"? Смешная логика...

Пока, Алексей

Hello, Alex Kouznetsov !

äÁ ÈÏÔØ 64, ËÁËÁÑ ÒÁÚÎÉÃÁ?

üÔÏ ÔÙ Ï ÞÅÍ? þÔÏ ÚÁ ïËÁÍÌ É ÷Ã7?

þÔÏ ÏÄÉÎ É ÔÏÔ ÖÅ ÐÒÏÇÒÁÍÍÉÓÔ ÐÉÛÅÔ ÎÁ ó (ÅÓÌÉ ÜÔÏ ÓÉÛÎÙÅ ËÏÍÐÉÌÑÔÏÒÙ) ÌÕÞÛÅ ÞÅÍ ÎÁ ÁÓÓÅÍÂÌÅÒÅ ÎÉËÏÇÏ ÎÅ ÕÄÉ×ÌÑÅÔ, ÂÏÌÅÅ ÔÏÇÏ, ÄÌÑ ÓÏ×ÒÅÍÅÎÎÙÈ ÁÒÈÉÔÅËÔÕÒ É ÂÏÌØÛÉÈ ÐÒÏÇÒÁÍÍ ÜÔÏ ÅÓÔÅÓÔ×ÅÎÎÏ.

üÔÏ ÔÅÏÒÅÔÉÞÅÓËÉ ÍÏÖÅÔ ÂÙÔØ, ÈÏÔÑ ÐÒÁËÔÉÞÅÓËÉ ÍÁÌÏ×ÅÒÏÑÔÎÏ. HÏ ÇÏ×ÏÒÉÔ ÌÉÛØ Ï ÐÏÌÎÏÍ ÎÅÕÍÅÎÉÉ Á×ÔÏÒÁ ÔÅÓÔÁ ÐÉÓÁÔØ ÎÁ ÁÓÍÅ.

HÅ ÂÙÓÔÒÅÅ ÁÓÓÅÍÂÌÅÒÁ, Á ÂÙÓÔÒÅÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ. HÁÐÉÓÁÔØ ÂÙÓÔÒÅÅ ÁÓÓÅÍÂÌÅÒÁ ÜÌÅÍÅÎÔÁÒÎÏ - ÎÕÖÎÏ ÌÉÛØ ÎÁ ÁÓÓÅÍÂÌÅÒÅ ÎÁÐÉÓÁÔØ ÎÅÜÆÆÅËÔÉ×ÎÏ. þÔÏ-ÔÏ ×ÙÐÏÌÎÑÔØÓÑ ÂÙÓÔÒÅÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÎÅ ÍÏÖÅÔ × ÐÒÉÎÃÉÐÅ, ÔÁË ËÁË ËÒÏÍÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÐÒÏÃÅÓÓÏÒ ÎÉÞÅÇÏ ÎÅ ×ÙÐÏÌÎÑÅÔ É ÓÁÍ ÓÅÂÑ ÏÂÏÇÎÁÔØ ÎÅ ÍÏÖÅÔ. üÔÏ ÁÂÓÕÒÄ.

ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.
ðÒÉ×ÅÔ ÔÅÂÅ, Alex!

AK> úÎÁÞÉÔ, ÔÏ ÞÔÏ ÐÒÏÇÉ, ÓËÏÍÐÉÌÉÒÏ×ÁÎÎÙÅ O'Caml ÉÌÉ VC7, ÏËÁÚÁÌÉÓØ AK> ÂÙÓÔÒÅÅ ÁÓÓÅÍÂÌÅÒÎÏÊ - ÎÉËÏÇÏ ÎÅ ÕÄÉ×ÉÌÏ? üÔÏ ÐÏËÁÚÁÌÏÓØ AK> ÐÒÁ×ÄÏÐÏÄÏÂÎÙÍ? á ÔÏ ÞÔÏ æÏÒÔ "×ÔÉÓÎÕÌÓÑ" ÍÅÖÄÕ - ×ÓÅ ÓÒÁÚÕ ÚÁ×ÏÒÞÁÌÉ, AK> ÞÔÏ ÜÔÏÇÏ ÎÅ ÍÏÖÅÔ ÂÙÔØ, ÐÏÓËÏÌØËÕ "ÂÙÓÔÒÅÊ ÁÓÓÅÍÂÌÅÒÁ ÎÅ ÎÁÐÉÛÅÛØ"? AK> óÍÅÛÎÁÑ ÌÏÇÉËÁ...

óÔÏÐ-cÔÏÐ-cÔÏÐ. òÅÞØ ÉÚÎÁÞÁÌØÎÏ ÛÌÁ Ï ÐpÅÄÐÏÌÏÖÅÎÉÉ, ÞÔÏ ÐpÏÇpÁÍÍÁ × _ÉÎÔÅpÐpÅÔÁÔÏpÅ_ ×ÙÐÏÌÎÑÅÔcÑ ÂÙcÔpÅÅ, ÞÅÍ ÎÁÔÉ×ÎÙÊ ËÏÄ. ÷ ÏÔ×ÅÔ cËÁÚÁÌÉ, ÞÔÏ ÔÁËÏÅ ÍÏÖÅÔ ÂÙÔØ ÔÏÌØËÏ × cÌyÞÁÅ, ÅcÌÉ ÎÁÔÉ×ÎÙÊ [ÁccÅÍÂÌÅpÎÙÊ] ËÏÄ ÂÙÌ ÐÉcÁÎ ÌÅ×ÏÊ ÚÁÄÎÅÊ ÎÏÇÏÊ (ÐpÉÞÉÎÁ #1). á ËÏÍÐÉÌÑÔÏpÙ ×ÙÄÁÀÔ ÔÏÔ ÖÅ ÎÁÔÉ×ÎÙÊ ËÏÄ. ðÏÞÅÍy ÏÎ ÂÙcÔpÅÅ ÁccÅÍÂÌÅpÎÏÇÏ? üÔÏ ÏÐÑÔØ ÔÁËÉ ÐpÉÞÉÎÁ #1 :) ó y×ÁÖÅÎÉÅÍ, E×ÇÅÎÉÊ. ewg::cats-online.ru

... ËÏÔÑÔ ÐÏ ÏÓÅÎÉ ÓÞÉÔÁÀÔ

Thu Oct 02 2003 23:21, Artem Kamburov wrote to Dima Orlov:

AK> á ÞÔÏ, ÓÅÊÞÁÓ ÐÒÏÃÅÓÓÏÒÙ ÍÅÄÌÅÎÎÅÅ ÐÁÍÑÔÉ? éÌÉ Ï ×ÉÒÔÕÁÌØÎÏÊ ÐÁÍÑÔÉ ÕÖÅ AK> ×ÓÅ ÚÁÂÙÌÉ?

üÔÏ ÎÅ×ÁÖÎÏ.

AK> èÍÍ... á æÏÒÔ ÜÔÏ É ÅÓÔØ ÁÓÍ (ÄÏËÁÚÁÔØ ÏÂÒÁÔÎÏÅ ÏÞÅÎØ ÓÌÏÖÎÏ).

äÌÑ È86?? ïÊ...

AK> æÏÒÔ ÓÏÓÔÏÉÔ ËÁË ÍÉÎÉÍÕÍ ÉÚ: AK> 1) ÎÁÂÏÒÁ ÐÒÉÍÉÔÉ×Ï× (ÎÁÐÉÓÁÎÎÙÈ ÔÅÍ ÓÁÍÙÍ ÁÓÍÏÍ) Ó ÅÄÉÎÙÍ ÓÔÁÎÄÁÒÔÏÍ AK> ÐÅÒÅÄÁÞÉ ÐÁÒÁÍÅÔÒÏ× (ÞÅÒÅÚ ÓÔÅË) AK> 2) ÛÉÔÏÇÏ ËÏÄÁ, ËÏÔÏÒÙÊ ÏÐÉÓÙ×ÁÅÔ × ËÏÎÅÞÎÏÍ ÓÞÅÔÅ × ËÁËÏÊ AK> ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÜÔÉ ÐÒÉÍÉÔÉ×Ù ×ÙÐÏÌÎÑÀÔÓÑ

AK> á ÔÅÐÅÒØ ÓÍÏÔÒÉÔÅ, ÞÔÏ ÐÒÏÉÓÈÏÄÉÔ - ÅÓÌÉ ÓÁÍÁÑ ÍÅÄÌÅÎÎÁÑ ÏÐÅÒÁÃÉÑ - AK> ÚÁÇÒÕÚËÁ ËÅÛÁ, ÔÏ ÐÒÉ ÔÁËÏÊ ÏÒÇÁÎÉÚÁÃÉÉ ÐÒÉÍÉÔÉ×Ù ÚÁÇÒÕÖÁÀÔÓÑ × ÎÅÇÏ ÐÒÉ AK> ÐÅÒ×ÏÍ AK> ×ÙÚÏ×Å, Á ÐÒÉ ×ÓÅÈ ÐÏÓÌÅÄÕÀÝÉÈ (ÐÏÞÔÉ) ÎÁ ÜÔÏ ×ÒÅÍÑ ÎÅ ÔÒÁÔÉÔÓÑ. ô.Å. ÎÁ AK> ÎÅÓËÏÌØËÏ ÓÏÔÅÎ ×ÙÚÏ×Ï× ÏÄÎÁ ÚÁÇÒÕÚËÁ!!!

þÅÍ ÜÔÏ ÏÔÌÉÞÁÅÔÓÑ ÏÔ ÐÏÄÐÒÏÇÒÁÍÍ ÎÁ ÁÓÓÅÍÂÌÅÒÅ ÉÌÉ ÆÕÎËÃÉÊ ó? ôÅÍ, ÞÔÏ × ËÅÛ ËÒÏÍÅ ÆÕÎËÃÉÊ ÅÝÅ ÎÁÄÏ ÚÁÇÒÕÖÁÔØ ÓÏÂÓÔ×ÅÎÎÏ ÉÎÔÅÐÒÅÔÁÔÏÒ. ëÁË ÜÔÏ ÍÏÖÅÔ Õ×ÅÌÉÞÉÔØ ÓËÏÒÏÓÔØ, ÉÎÔÅÒÅÓÎÏ?

AK> á ÞÔÏ ÄÅÌÁÀÔ ÓÏ×ÒÅÍÅÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÙ - ÏÎÉ ÉÎÌÁÊÎÑÔ ÐÒÏÃÅÄÕÒÙ ×ÓÅ ÜÔÉ AK> ÓÏÔÎÉ ÒÁÚ (ÚÁÞÅÍ ÉÍ ÌÉÛÎÉÅ call/ret). ô.Å. ÎÁ ÓÏÔÎÀ ×ÙÚÏ×Ï× ÓÏÔÎÑ AK> ÚÁÇÒÕÚÏË !!!

ôÙ ÎÅ ÓÏ×ÓÅÍ ÐÏÎÉÍÁÅÛØ ËÁË ÒÁÂÏÔÁÀÔ ËÏÍÐÉÌÑÔÏÒÙ.

AK> á ÐÏÓÌÅ ÐÙÔÁÀÔÓÑ ÏÐÔÉÍÉÚÉÒÏ×ÁÔØ (ÐÏÞÔÉ ×ÓÅÇÄÁ ÅÝÅ Õ×ÅÌÉÞÉÔØ) AK> ÜÔÏÔ ÇÒÏÍÁÄÎÙÊ ËÏÄ.

HÅÔ.

AK> òÅÚÕÌØÔÁÔ ÐÏ ÍÏÅÍÕ ÍÙ ×ÓÅ ÏÞÅÎØ ÈÏÒÏÛÏ ÚÎÁÅÍ :-(.

úÁÍÅÞÁÔÅÌØÎÙÊ ÒÅÚÕÌØÔÁÔ. íÅÎÑ ×ÐÏÌÎÅ ÕÓÔÒÁÉ×ÁÀÝÉÊ. ÷ ÞÅÍ _ËÏÎËÒÅÔÎÏ_ ÚÁËÌÀÞÁÅÔÓÑ ":-("?

AK> ó ÁÓÍÏÍ ÓÉÔÕÁÃÉÑ ÐÏÈÏÖÁÑ. HÁ ÐÒÏÅËÔÁÈ ÄÏ ÄÅÓÑÔËÏ× ë ÁÓÍ ÍÏÖÅÔ ×ÙÉÇÒÙ×ÁÔØ AK> ÐÏ ÓËÏÒÏÓÔÉ, Á ÄÁÌÅÅ ÐÏÌÎÙÊ ÏÂÌÏÍ.

HÅÔ. ÷ÐÒÏÞÅÍ ÐÏÛÌÏ ÕÖÅ ÐÏ ×ÔÏÒÏÍÕ ËÒÕÇÕ...

WBR, àÒÉÊ.

÷ÓÅÍ ÐÒÉ×ÅÔ.

á ÞÔÏ, ÓÅÊÞÁÓ ÐÒÏÃÅÓÓÏÒÙ ÍÅÄÌÅÎÎÅÅ ÐÁÍÑÔÉ? éÌÉ Ï ×ÉÒÔÕÁÌØÎÏÊ ÐÁÍÑÔÉ ÕÖÅ ×ÓÅ ÚÁÂÙÌÉ?
îÅÔ. åÓÌÉ ÎÁ æÏÒÔ-ÐÒÏÃÅÓÓÏÒÅ ÎÁÞÎÅÛØ ÐÉÓÁÔØ ÎÁ ÁÓÍÅ (ËÏÔÏÒÏÇÏ, ËÓÔÁÔÉ ÐÒÏÉÚ×ÏÄÉÔÅÌØ ÎÅ ÄÁÅÔ) × ÓÔÉÌÅ PIC, AVR ÉÌÉ x86-ÇÏ, Õ ÔÅÂÑ ÏÞÅÎØ ÍÎÏÇÏ ËÏÄÁ ÕÊÄÅÔ ÎÁ ÂÏÒØÂÕ Ó "ÓÅÇÍÅÎÔÉÒÏ×ÁÎÎÏÊ" ÐÁÍÑÔØÀ, "ÄÕÒÁÃËÏÊ" ÁÒÈÉÔÅËÔÕÒÏÊ É "ÎÅÄÏÓÔÁÔËÏÍ" ÒÅÇÉÓÔÒÏ×. ÷ ËÏÎÅÞÎÏÍ ÉÔÏÇÅ ÔÅÂÅ ÐÒÉÄÅÔÓÑ ÌÉÂÏ ÂÒÁÔØ ÄÒÕÇÏÊ ÐÒÏÃ, ÌÉÂÏ ÍÅÎÑÔØ ÓÅÂÑ (ÞÉÔÁÊ - ÐÅÒÅÈÏÄÉÔØ ÎÁ æÏÒÔ).
èÍÍ... á æÏÒÔ ÜÔÏ É ÅÓÔØ ÁÓÍ (ÄÏËÁÚÁÔØ ÏÂÒÁÔÎÏÅ ÏÞÅÎØ ÓÌÏÖÎÏ).
÷Ù ÎÅ ÓÏ×ÓÅÍ ÐÏÎÉÍÁÅÔÅ, ÞÔÏ ÅÓÔØ æÏÒÔ. æÏÒÔ ÓÏÓÔÏÉÔ ËÁË ÍÉÎÉÍÕÍ ÉÚ: 1) ÎÁÂÏÒÁ ÐÒÉÍÉÔÉ×Ï× (ÎÁÐÉÓÁÎÎÙÈ ÔÅÍ ÓÁÍÙÍ ÁÓÍÏÍ) Ó ÅÄÉÎÙÍ ÓÔÁÎÄÁÒÔÏÍ ÐÅÒÅÄÁÞÉ ÐÁÒÁÍÅÔÒÏ× (ÞÅÒÅÚ ÓÔÅË) 2) ÛÉÔÏÇÏ ËÏÄÁ, ËÏÔÏÒÙÊ ÏÐÉÓÙ×ÁÅÔ × ËÏÎÅÞÎÏÍ ÓÞÅÔÅ × ËÁËÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÜÔÉ ÐÒÉÍÉÔÉ×Ù ×ÙÐÏÌÎÑÀÔÓÑ ëÒÏÍÅ ÔÏÇÏ, ÔÁÍ ÅÝÅ ÅÓÔØ ÓÌÏ×ÁÒØ (ÂÁÚÁ ÄÁÎÎÙÈ ÐÏ ËÏÔÏÒÏÊ ÐÒÉÍÉÔÉ×Ù É ÎÅ ÔÏÌØËÏ ÍÏÖÎÏ ÎÁÊÔÉ × ÐÁÍÑÔÉ) É VFM - ÐÒÉÍÉÔÉ× ËÏÔÏÒÙÊ ÉÓÐÏÌÎÑÅÔ ÛÉÔÙÊ ËÏÄ (×ÒÅÍÑ ÅÇÏ ×ÙÐÏÌÎÅÎÉÑ ÏÔ ÅÄÉÎÉà ÄÏ ÄÅÓÑÔËÏ× (ÏÂÙÞÎÏ 5-15) ÔÁËÔÏ× ÐÒÏÃÅÓÓÏÒÁ) ÷ÉÄ ÛÉÔÏÇÏ ËÏÄÁ ÍÏÖÅÔ ÂÙÔØ ÒÁÚÎÙÍ (ÂÁÊÔ-ËÏÄ ËÁË × öÁÂÅ, 2-4 ÂÁÊÔÎÙÊ ËÏÓ×ÅÎÎÙÊ (×ÓÅ ÜÌÅÍÅÎÔÙ - ÁÄÒÅÓÁ), ÐÏÄÐÒÏÇÒÁÍÍÎÙÊ (×ÓÅ ÜÌÅÍÅÎÔÙ - call-Ù), Ó×ÅÒÎÕÔÙÊ (×ÓÅ ÜÌÅÍÅÎÔÙ - ÎÅËÉÅ ÞÉÓÌÁ Ó×ÑÚÁÎÎÙÅ Ó ÁÄÒÅÓÁÍÉ)...), ÎÏ ÓÕÔØ × ÔÏÍ, ÞÔÏ ×ÙÚÙ×ÁÅÍÁÑ ÐÒÏÃÅÄÕÒÁ ÂÏÌØÛÅ ÜÌÅÍÅÎÔÁ ÛÉÔÏÇÏ ËÏÄÁ. á ÔÅÐÅÒØ ÓÍÏÔÒÉÔÅ, ÞÔÏ ÐÒÏÉÓÈÏÄÉÔ - ÅÓÌÉ ÓÁÍÁÑ ÍÅÄÌÅÎÎÁÑ ÏÐÅÒÁÃÉÑ - ÚÁÇÒÕÚËÁ ËÅÛÁ, ÔÏ ÐÒÉ ÔÁËÏÊ ÏÒÇÁÎÉÚÁÃÉÉ ÐÒÉÍÉÔÉ×Ù ÚÁÇÒÕÖÁÀÔÓÑ × ÎÅÇÏ ÐÒÉ ÐÅÒ×ÏÍ ×ÙÚÏ×Å, Á ÐÒÉ ×ÓÅÈ ÐÏÓÌÅÄÕÀÝÉÈ (ÐÏÞÔÉ) ÎÁ ÜÔÏ ×ÒÅÍÑ ÎÅ ÔÒÁÔÉÔÓÑ. ô.Å. ÎÁ ÎÅÓËÏÌØËÏ ÓÏÔÅÎ ×ÙÚÏ×Ï× ÏÄÎÁ ÚÁÇÒÕÚËÁ!!! á ÞÔÏ ÄÅÌÁÀÔ ÓÏ×ÒÅÍÅÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÙ - ÏÎÉ ÉÎÌÁÊÎÑÔ ÐÒÏÃÅÄÕÒÙ ×ÓÅ ÜÔÉ ÓÏÔÎÉ ÒÁÚ (ÚÁÞÅÍ ÉÍ ÌÉÛÎÉÅ call/ret). ô.Å. ÎÁ ÓÏÔÎÀ ×ÙÚÏ×Ï× ÓÏÔÎÑ ÚÁÇÒÕÚÏË !!! á ÐÏÓÌÅ ÐÙÔÁÀÔÓÑ ÏÐÔÉÍÉÚÉÒÏ×ÁÔØ (ÐÏÞÔÉ ×ÓÅÇÄÁ ÅÝÅ Õ×ÅÌÉÞÉÔØ) ÜÔÏÔ ÇÒÏÍÁÄÎÙÊ ËÏÄ. òÅÚÕÌØÔÁÔ ÐÏ ÍÏÅÍÕ ÍÙ ×ÓÅ ÏÞÅÎØ ÈÏÒÏÛÏ ÚÎÁÅÍ :-(. ó ÁÓÍÏÍ ÓÉÔÕÁÃÉÑ ÐÏÈÏÖÁÑ. îÁ ÐÒÏÅËÔÁÈ ÄÏ ÄÅÓÑÔËÏ× ë ÁÓÍ ÍÏÖÅÔ ×ÙÉÇÒÙ×ÁÔØ ÐÏ ÓËÏÒÏÓÔÉ, Á ÄÁÌÅÅ ÐÏÌÎÙÊ ÏÂÌÏÍ. áÒÔÅÍëáä
2-Oct-03 09:48 Alex Kouznetsov wrote to Eugene Romanov:

AK> Хм... Тогда начнем, пожалуй ;-) AK> Значит, то что проги, скомпилированные O'Caml или VC7, оказались быстрее AK> ассемблерной - никого не удивило? Это показалось правдоподобным? А то Насколько я помню, там напротив ассемблера было написано что-то в духе "особо не оптимизируя".

AK> что Форт AK> "втиснулся" между - все сразу заворчали, что этого не может быть, AK> поскольку "быстрей ассемблера не напишешь"? Смешная логика... Это отдельнй разговор. "Это" - это то, что для современных процессоров с несколькими исп. устройствами, переименованием регистров, out of order исполнением и т.п. на асме ручками тяжело всё учесть и _хороший_ компилятор ЯВУ уделывает среднего программиста на асме -- это понятно всем, кроме тех ассемблерррррррщиков, котороые ведут себя как форррррррррррррррртеры (не путать с фортерами :-) и в качестве примера берут какой-нибудь зачуханный C-компилятор против кода, долго лизанного хорошими ассемблерщиками. Но про ЯВУ такое начали говорить совсем недавно, именно когда процессоры стали слишком умными. А вот то, что форт-программы быстрее ассемблерных -- я лично слышу со времён 80386. И сейчас -- зачастую без уточнения процессора. Я ещё не слышал, что после хорошего С-компилятора программа для AVR|MCS51|PIC|MSP430 работает быстрее, чем написанная на ассемблере. Про форт такое слышал. Впрочем, заодно с тем, что "у него ядро 17 байт, а вот у С!!!!" Поэтому ссылки на O'Caml и VC7 в данном случае не канают, давай ограничимся PIC*|AVR|MCS51|MSP430|...ну давай ARM7 и повторим эксперимент. И неплохо бы не только на функции Аккермана, а на чём-нибудь менее рекурсивном и более применимом в эхотаге, скажем, FIR, CRC16, подстановка байтов SLIP или PPP, ...

wbr,

Fri Oct 03 2003 00:05, Oleksandr Redchuk wrote to "Alex Kouznetsov":

OR> "Это" - это то, что для современных процессоров с несколькими исп. OR> устройствами, переименованием регистров, out of order исполнением и т.п. OR> на асме ручками тяжело всё учесть и _хороший_ компилятор ЯВУ уделывает OR> среднего программиста на асме -- это понятно всем, кроме тех

Ага... именно так. Написать на асме программу даже для первого пентиума с двумя конвейерами, учитывая порядок выполнения, возможность спаривания и т.п.

- уже нетривиальная задача. К тому же при работе на ассемблере вне пределов вылизываемой вставки кода бывает трудно отследить использование регистров и не скатиться к обычному load/store стилю.

OR> ассемблерррррррщиков, котороые ведут себя как форррррррррррррррртеры OR> (не путать с фортерами :-) и в качестве примера берут какой-нибудь OR> зачуханный C-компилятор против кода, долго лизанного хорошими OR> ассемблерщиками.

Ну это фанатство... оно что в Африке фанатство, что в среде фортеров (линуксоидов, сишников и т.д.....)

OR> Hо про ЯВУ такое начали говорить совсем недавно, именно когда процессоры OR> стали слишком умными. А вот то, что форт-программы быстрее ассемблерных OR> -- я лично слышу со времён 80386. И сейчас -- зачастую без уточнения OR> процессора. OR> Я ещё не слышал, что после хорошего С-компилятора программа для OR> AVR|MCS51|PIC|MSP430 работает быстрее, чем написанная на ассемблере. OR> Про форт такое слышал. Впрочем, заодно с тем, что "у него ядро 17 байт, OR> а вот у С!!!!"

Это тоже фанатство. После "усредненного" Форта получается все же чуть медленнее, хотя бы накладные расходы на вызовы слов (call/ret) и стековые манипуляции. Конечно, можно это убрать оптимизацией... но закавыка в том, что такая оптимизация не есть неотъемлемое свойство именно Форта.

OR> Поэтому ссылки на O'Caml и VC7 в данном случае не канают, OR> давай ограничимся PIC*|AVR|MCS51|MSP430|...ну давай ARM7 и повторим OR> эксперимент. И неплохо бы не только на функции Аккермана, а на чём-нибудь OR> менее рекурсивном и более применимом в эхотаге, скажем, FIR, CRC16, OR> подстановка байтов SLIP или PPP, ...

Если в лоб, то естественно, Форт будет медленнее. Хотя я недавно на 8 МГц форт-процессоре с треском обогнал MB90F549. 5 сек против 3,5 мин. И загадки никакой нет - шла работа с 96-битными числами, которые на MB90 считались ... ну понятно как считались, с битом переноса. А в Форт-процессор был встроен

96-битный арифметический блок... :)))) Пояснение смахивает на шутку, но в действительности Форт здесь выступил в своей обычной роли - не так сложно в реализации, как Си (или процессоры "общего назначения"), с другой стороны, работа уже не на уровне машинного кода. Обвязать 96-битный арифметический блок приемлемой по удобству дальнейшей работы логикой (речь о внутренностях ПЛИС) - очень непросто. Привязать этот блок к софтовому ядру форт-процессора - уже можно, причем сразу получается "чуть больше, чем ассемблер".
úÄÒÁ×ÓÔ×ÕÊ, Dmitry!

DO> þÔÏ ÏÄÉÎ É ÔÏÔ ÖÅ ÐÒÏÇÒÁÍÍÉÓÔ ÐÉÛÅÔ ÎÁ ó (ÅÓÌÉ ÜÔÏ ÓÉÛÎÙÅ ËÏÍÐÉÌÑÔÏÒÙ) DO> ÌÕÞÛÅ ÞÅÍ ÎÁ ÁÓÓÅÍÂÌÅÒÅ ÎÉËÏÇÏ ÎÅ ÕÄÉ×ÌÑÅÔ, ÂÏÌÅÅ ÔÏÇÏ, ÄÌÑ ÓÏ×ÒÅÍÅÎÎÙÈ DO> ÁÒÈÉÔÅËÔÕÒ É ÂÏÌØÛÉÈ ÐÒÏÇÒÁÍÍ ÜÔÏ ÅÓÔÅÓÔ×ÅÎÎÏ.

ðÒÏÇÒÁÍÍÉÓÔÙ ÂÙ×ÁÀÔ ÒÁÚÎÙÅ. õ ÂÅÓÔÏÌËÏ×ÏÇÏ ÐÒÏÇÒÁÍÍÅÒÁ ÍÏÖÅÔ ÂÙÔØ ÌÀÂÏÅ ÓÏÏÔÎÏÛÅÎÉÅ ÄÌÉÎÙ ËÏÄÁ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÒÁÚÎÙÈ ËÏÍÐÉÌÑÔÏÒÏ×. ðÒÉ ÎÏÒÍÁÌØÎÏÍ ÐÏÄÈÏÄÅ ÄÌÉÎÁ ËÏÄÁ ÎÁ ÁÓÓÅÍÂÌÅÒÅ ×ÓÅÇÄÁ ÂÕÄÅÔ ÎÅ ÂÏÌØÛÅ, ÞÅÍ ÎÁ ó. ðÏÓËÏÌØËÕ ËÔÏ ÍÎÅ ÐÏÍÅÛÁÅÔ ÎÁÐÉÓÁÔØ ÎÁ ÁÓÍÅ ÔÏ, ÞÔÏ ÎÁËÏÍÐÉÌÉÒÏ×ÁÌ ó? á ×ÏÔ ÎÁÓÞÅÔ ÓÏ×ÒÅÍÅÎÎÙÈ ÁÒÈÉÔÅËÔÕÒ É ÂÏÌØÛÉÈ ÐÒÏÇÒÁÍÍ × ÐÒÉÌÏÖÅÎÉÉ Ë ÜÈÏÔÁÇÕ, ÔÁË ÂÏÌØÛÏÊ ÐÒÏÇÒÁÍÍÅ - ÂÏÌØÛÏÊ ÓÂÏÊ. ðÏÞÅÍÕ-ÔÏ ÚÄÅÓØ Ï ÜÔÏÍ ÎÉËÔÏ ÎÉ ÓÌÏ×Á. äÌÑ ÐÒÏÇÒÁÍÍÙ, ÒÁÂÏÔÁÀÝÅÊ × ÇÁÄËÉÈ ÕÓÌÏ×ÉÑÈ, Õ×ÅÌÉÞÅÎÉÅ ÏÂßÅÍÁ = ÐÏ×ÙÛÅÎÉÅ ×ÏÚÍÏÖÎÏÓÔÉ ÓÂÏÑ. é ÎÅ ÎÕÖÎÏ ÇÏ×ÏÒÉÔØ Ï ×ÏÔÞ-ÄÏÇÁÈ. üÔÏ - ÕÖÅ ÂÏÒØÂÁ Ó ÐÒÏÉÚÏÛÅÄÛÉÍ ÓÂÏÅÍ, ËÏÔÏÒÏÇÏ ÖÅÌÁÔÅÌØÎÏ ÎÅ ÄÏÐÕÓËÁÔØ ×ÏÏÂÝÅ.

DO> üÔÏ ÔÅÏÒÅÔÉÞÅÓËÉ ÍÏÖÅÔ ÂÙÔØ, ÈÏÔÑ ÐÒÁËÔÉÞÅÓËÉ ÍÁÌÏ×ÅÒÏÑÔÎÏ. HÏ ÇÏ×ÏÒÉÔ DO> ÌÉÛØ Ï ÐÏÌÎÏÍ ÎÅÕÍÅÎÉÉ Á×ÔÏÒÁ ÔÅÓÔÁ ÐÉÓÁÔØ ÎÁ ÁÓÍÅ.

DO> HÅ ÂÙÓÔÒÅÅ ÁÓÓÅÍÂÌÅÒÁ, Á ÂÙÓÔÒÅÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ. HÁÐÉÓÁÔØ ÂÙÓÔÒÅÅ DO> ÁÓÓÅÍÂÌÅÒÁ ÜÌÅÍÅÎÔÁÒÎÏ - ÎÕÖÎÏ ÌÉÛØ ÎÁ ÁÓÓÅÍÂÌÅÒÅ ÎÁÐÉÓÁÔØ ÎÅÜÆÆÅËÔÉ×ÎÏ.

ñ ÚÎÁÌ, ÞÔÏ ÔÙ ÚÎÁÅÛØ ;)

DO> þÔÏ-ÔÏ ×ÙÐÏÌÎÑÔØÓÑ ÂÙÓÔÒÅÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÎÅ ÍÏÖÅÔ × ÐÒÉÎÃÉÐÅ, ÔÁË ËÁË DO> ËÒÏÍÅ ÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÐÒÏÃÅÓÓÏÒ ÎÉÞÅÇÏ ÎÅ ×ÙÐÏÌÎÑÅÔ É ÓÁÍ ÓÅÂÑ ÏÂÏÇÎÁÔØ DO> ÎÅ DO> ÍÏÖÅÔ. üÔÏ ÁÂÓÕÒÄ.

÷ÏÔ ÂÙÌ Õ ÍÅÎÑ × ÇÏÓÔÑÈ ÈÌÏÐÞÉË ÐÒÏÇÒÁÍÍÉÓÔ ÉÚ óÉÌÉËÏÎÏ×ÏÊ ÄÏÌÉÎÙ. òÁÚÒÁÂÁÔÙ×ÁÅÔ ÔÁÍ firmware ÄÌÑ ÔÏÞÐÁÄÏ× ÎÏÕÔÂÕËÏ×. ôÁË ÐÒÏÇÒÁÍÍÙ ÄÌÑ ÏÂÏÒÕÄÏ×ÁÎÉÑ, ËÏÔÏÒÏÅ ÉÄÅÔ × ËÒÕÐÎÕÀ ÓÅÒÉÀ, ÐÉÛÕÔÓÑ ÉÍÉ ÔÏÌØËÏ ÎÁ ÁÓÓÅÍÂÌÅÒÅ, ÈÏÔÑ ×ÓÑËÉÅ ÐÒÏÍÅÖÕÔÏÞÎÙÅ ÐÒÏÄÕËÔÙ - ÎÁ ó++. ëÓÔÁÔÉ, ÚÁËÏÎÞÉÌÓÑ ÔÁÍ ËÒÉÚÉÓ. ôÏÌØËÏ ÉÎÄÕÓÙ ÕÅÈÁÌÉ, ËÁË ÄÅÌÁ ÌÕÞÛÅ ÐÏÛÌÉ. ;) õÓÐÅÈÏ×! äÏ Ó×ÉÄÁÎÉÑ. Sergey.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required