возврат из подпрограмм

Jun 04, 2006 Last reply: 19 years ago 3173 Replies

Andrey, ты ещё здесь сидишь?

Четверг Июнь 15 2006 20:42, Andrey Bivshih wrote to George Shepelev:

GS>> Ещё остались слова "не пробовал и не собирается пробовать". GS>> Повторяю, лгать нехорошо! AB> Я эту эху читаю с 1999 года, и все время ты ведешь священную войну AB> против Си. Раз за такой срок не собрался еще его изучить, то можно AB> сказать, что и не собираешься.

Давно изучил. И убедился, что он отнюдь не является панацеей, о чём в эхе снова завели привычную сказку...

AB> Так что лжи тут нет.

Была именно твоя ложь. Впредь воздерживайся...

Георгий

Здравствуйте

Andrey Bivshih пишет: Всё поскипал, вот подтверждения для предложения по занесению Георгия и его отношение к C, USB и прочего в FAQ. Георгий не обижайся.

С уважением, Шаповалов Алексей

Здравствуйте

Alex Kocharin пишет:

Хм, и правда что-то есть, правда не запустилось. Посмотрю на чистой системе. Спасибо. С уважением, Шаповалов Алексей

Здравствуй, Alex Kocharin! июня месяца пятнадцатого дня ты писал(а):

IH>> Я нигде не призывал сочинять "сверхкомпактный" сишный текст. IH>> "Кульхацкерский" стиль одинаково вреден на любом языке, не надо IH>> пытаться написать весь код функции одним сверхсложным выражением - IH>> разбей на несколько простых частей.

AK> "Да, каждая отдельная часть получается простой. Но при этом их AK> взаимодействие становится гораздо более сложным ... Представьте себе AK> человеческий мозг. Каждая его составляющая проста, но их взаимодействие AK> превращает мозг в очень сложную систему. В этом-то всё и дело: целое AK> больше частей. Если взять проблему, разделить ее пополам и сказать, что AK> каждая половинка вполовину проще, то при этом вы игнорируете сложность AK> интерфейса между половинками."

AK> (c) Линус Тордвальдс, о недостатках концепции микроядра.

Как я понимаю, Торвальдс здесь говорит о более высоком уровне - разбиении на модули и взаимодействии между ними. Я же говорил о коде самогО модуля и предлагал не городить без надобности сложных конструкций.

С уважением, Игорь Хавторин (ака Gary). E-mail: fido_gary собака gfm точка ru

Hello Jurgis.

Tue Jun 13 2006 21:16, Jurgis Armanavichius wrote to Igor Havtorin:

IH>> И я с него начинал - видимо в СССР Turbo C (Borland C) был "народным" IH>> инструментом.

JA> Истинно так! :-) Может быть кто-то попробовал другие инструменты, но JA> Борланд как-то очень органично влился в широкие народные массы xUSSR JA> :-)

Hо паскаль у них явно лучше получился. :)

Dimmy.

Привет!

Wed Jun 14 2006 22:14, Alexander Zabairatsky wrote to Jurgis Armanavichius:

IH>>> И я с него начинал - видимо в СССР Turbo C (Borland C) был IH>>> "народным" инструментом. JA>> Истинно так! :-) Может быть кто-то попробовал другие инструменты, но JA>> Борланд как-то очень органично влился в широкие народные массы xUSSR JA>> :-) AZ> Борланд влился своим Трупо-Паскалем, черт его подери! :-Ё И именно AZ> из-за него на просторах экс-СССР наблюдается такое засилье паскалянтов.

Hе думаю. Я читал, что Паскаль широко применяется в учебном процессе. Хотя точно не уверен.

AZ> Впрочем, турбо-С++ 1.0, если не пользовать его приплюснустость, как AZ> система программирования на чистом С был _очень_ неплох в свое время...

А я уже не помню, С++ он был или просто С... Просто он мне очень сильно понравился удобством использования :-) У меня тогда ведь вообще никаких IDE не было, коммандными файлами пользовался. А тут такая крутизна! :-)

Юргис

Привет!

Fri Jun 16 2006 01:29, Alex Mogilnikov wrote to Jurgis Armanavichius:

JA>> Hу и стеков же у тебя! Это для мультизадачного режима? AM> Это процессорное ядро такое - у него при смене режимов работы часть AM> регистров автоматически подменяется, в том числе указатель стека. AM> Hапример в пользовательском режиме программа использует один стек, AM> возникло исключение (например IRQ) - ядро переходит в режим IRQ и AM> подменяет указатель стека на другой, в результате обработчик IRQ AM> использует свой собственный IRQ стек. Вернулись из обработчика IRQ в AM> юзерский режим - регистры переключились обратно и прерванная программа AM> продолжает использовать юзерский стек.

Понял. Интересная система! :-) Я с такими пока еще не сталкивался.

Юргис

Привет!

Thu Jun 15 2006 10:52, George Shepelev wrote to Jurgis Armanavichius:

JA>> Это - конечно! Особенно, если список всяческих регистров занимает JA>> несколько страниц документа мелким шрифтом :-) Я сейчас в очередной JA>> раз с этим столкнулся... Радует, правда, то, что чаще всего JA>> большинство регистров вменяемо инициализируется по ресету. Тогда можно JA>> по-началу разобраться только с нужными регистрами. GS> Я бы на это не закладывался! Ибо ловился с нелогичной инициализацией GS> по ресету на 16F877 и 89C2051 :-/

Конечно! Просто на начальном этапе освоения это помогает, а потом все-равно придется досконально разобраться. Особенно, если какие-то трудности полезут.

Юргис

Привет!

Fri Jun 16 2006 13:07, Olga Nonova wrote to Jurgis Armanavichius:

JA>> :-))) Все веселее и веселее :-) То вы упрекаете за использование ЯВУ, JA>> то вам не понутру работа с ассемблерным файлом. Вы уж там у себя как-то JA>> определитесь. А то совсем уж криво выглядит... ON> Ответ не по существу. Перевод стрелок на оппонента. Слив засчитан.

:-))) Считайте, считайте!

ON>>> Бог миловал,- я никогда не занималась массовым выпуском чего-либо. JA>> Hу вот. Все встает на свои места :-) Что-то ваш коллектив прокалываться JA>> стал... Промашечка вышла! :-) ON> В чем промашка? Ответ только по существу.

Так вам любой не понравившийся ответ - сразу попугайское: "Слив засчитан!" :-)))

JA>> Ложь от начала и до конца :-) Лучше уж скажите, что кто-то из вашего JA>> коллектива учавствует в разработке каких-то наукообразных стендов,где JA>> абсолютно не важны большинство вопросов эффективности ембеддедных JA>> разработок, о которых мы тут частенько беседуем :-) ON> Отучаемся гнусно измышлять небылицы. Гораздо проще спросить, чем ON> конкретно занимается человек.

Хорошо, последую вашему совету, спрошу: "Чем конкретно вы занимаетесь?". Уточняю, интересует тематика эхи, а не свободное время или хобби. Только как-то я сомневаюсь, что вы правду скажете...

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

ON>>> У Вас случайна путаница Ассемблера с Макроассемблером? Разницу знаете? ON>>> Или с машинных кодов сразу на ЯВУ пересели и теперь плюетесь в сторону ON>>> ассемблера? JA>> :-))) Если я написал кросс-ассемблер, а потом несколько лет работал с JA>> макроассемблером, то как вашему коллективу кажется, знаю я ответ на JA>> этот вопрос или нет? ;-) ON> Hигде в предыдущих Ваших письмах не заходила речь про макроассемблер, ON> а всегда только звучало: Ассемблер-говно, зато ЯВУ- рулез форева.

:-))) Все ясно: ваш коллектив просто не умеет читать написанного! Ибо я никогда не называл язык Ассемблера говном :-) А что ЯВУ - рулез фарева, то это истинная правда. Просто вам не понять этих вещей по той понятной причине, что вы ничего в этих вопросах не смыслите :-)

Кстати, вашему коллективу известно, что язык Ассемблера относится к конкретному процессору? И вам известно, что такое макроассемблер? Я очень сильно подозреваю, что вам это неизвестно :-)

ON> Из этого однозначно следует - Вы не владеете техникой программирования ON> в макросах ассемблера, а ЯВУ воспринимаете исключительно, как средство ON> облегчения набора исходного текста.

Бред :-)

ON> Извините за прямоту, но слив опять засчитан.

:-))) Ох-хо-хо... Hасмешили вы меня :-) Счетовод вы наш коллективный...

А, вообще-то, вы своими тупыми и безграмотными постами уже начинаете надоедать... В общем, я вижу, что на тему embedded мы с вами почти все выяснили, а спорить по второму и более разу о том, чего вы совершенно не понимаете, - бессмысленная трата времени. За сим откланиваюсь...

Юргис

Здравствуйте, Уважаемый Jurgis!

Thu Jun 15 2006 22:58, Jurgis Armanavichius wrote to Olga Nonova:

JA>>> ассемблерный текст этого самого стартапа и добавлю туда то, что JA>>> понадобится. Ферштейн? ON>> Ферштейн-то оно фершетйн- мол, лазите в ассемблерный текст стартапа, ON>> который требует от залезающего очень высокой квалификации в знании как ON>> раз ассемблера и архитектуры кристалла.

JA> :-))) Все веселее и веселее :-) То вы упрекаете за использование ЯВУ, JA> то вам не понутру работа с ассемблерным файлом. Вы уж там у себя как-то JA> определитесь. А то совсем уж криво выглядит...

Ответ не по существу. Перевод стрелок на оппонента. Слив засчитан.

ON>> И потом, поясните это самое Ваше "немножечко разобраться"? Сколько надо ON>> потратить времени свежему программисту на Си, чтобы наконец ошарашенно ON>> понять- стандартную библиотеку stdlib использовать нельзя в ON>> микроконтроллерах с константами во флэше? Вы, например, сколько ON>> потратили? Или по-примитивности программ пока не дошли до этого этапа ON>> развития?

JA> А вам стоит объяснять? Вы же не владеете вопросом! Вы вообще знаете, что JA> такое флэш? ;-)

Уход от ответа. Перевод стрелок на оппонента. Слив засчитан.

ON>> Демагогия и уход от тяжелых вопросов бытия. Я не про ассемблер, а про ON>> нестандартный Си в Ваших кристаллах.

JA> У меня есть нестандартный Си в моих кристаллах? Побойтесь Бога, Мадам!

Увод разговора в сторону. Перевод стрелок на оппонента. Слив засчитан.

ON>> Бог миловал,- я никогда не занималась массовым выпуском чего-либо.

JA> Hу вот. Все встает на свои места :-) Что-то ваш коллектив прокалываться JA> стал... Промашечка вышла! :-)

В чем промашка? Ответ только по существу.

ON>> Товар мой штучный, умственный и дорогостоящий. Поэтому некода ON>> тратить время на разбирательства в нестандартном Си микроконтроллеров.

JA> Ложь от начала и до конца :-) Лучше уж скажите, что кто-то из вашего JA> коллектива учавствует в разработке каких-то наукообразных стендов, где JA> абсолютно не важны большинство вопросов эффективности ембеддедных JA> разработок, о которых мы тут частенько беседуем :-)

Отучаемся гнусно измышлять небылицы. Гораздо проще спросить, чем конкретно занимается человек. Заодно, может сподобитесь сформулировать критерий "эффективности ембеддедных разработок"? Страсть, как интересно.

ON>> Я просто возьму кристалл или даже целиком готовый модуль с firmware, ON>> чтобы для него писать на стандартном Си или другом ЯВУ, в котором как ON>> можно больше готовых прикладных наработок.

JA> Вот именно! Сами-то вы ничего ембеддедного разработать не способны :-) JA> А что касается строительства какой-нибудь научно-исследовательской JA> аппаратуры, разработки стендов, конструирования системы для научных JA> исследований - то любому грамотному инженеру понятно, что построение JA> такой системы из готовых кубиков - самый верный и правильный путь. JA> Тут вы никакой америки не открыли.

Отучаемся строить гнусные теории и выводы на базе бредовых видений. Проще узнать, как оно на самом деле обстоит дело.

ON>> У Вас случайна путаница Ассемблера с Макроассемблером? Разницу знаете? ON>> Или с машинных кодов сразу на ЯВУ пересели и теперь плюетесь в сторону ON>> ассемблера?

JA> :-))) Если я написал кросс-ассемблер, а потом несколько лет работал с JA> макроассемблером, то как вашему коллективу кажется, знаю я ответ на JA> этот вопрос или нет? ;-)

Hигде в предыдущих Ваших письмах не заходила речь про макроассемблер, а всегда только звучало: Ассемблер-говно, зато ЯВУ- рулез форева. Из этого однозначно следует - Вы не владеете техникой программирования в макросах ассемблера, а ЯВУ воспринимаете исключительно, как средство облегчения набора исходного текста. Это и есть примитив, который просвечивает в каждом Вашем послании. Извините за прямоту, но слив опять засчитан.

Всего Вам Хорошего Ольга

Здравствуйте, Уважаемый Jurgis!

Thu Jun 15 2006 22:58, Jurgis Armanavichius wrote to Olga Nonova:

ON>> Зачем? Очередной баг? Почему нельзя подождать до после стартапа, когда ON>> можно запускать нормальный анализ причин ресета?

JA> Как я неоднократно говорил, вы ни бельмеса не смыслите в вопросах, про JA> которые тут пафосно (и очень смешно) рассуждаете :-)

Ответ не по-существу. Перевод стрелок на оппонента. Слив засчитан.

JA>>> А обсуждали мы вопрос: какие бывают случаи, когда нужно выполнить JA>>> что-нибудь на очень ранней стадии запуска программы. Т.е. сразу JA>>> после ресета. Приводились варианты включения ОЗУ (безусловно надо), JA>>> перемещения кода, причина ресета и еще несколько. ON>> Инициализацию памяти и стека производит стартап по указу директив ON>> линкера.

JA> Снова в лужу... Подозреваю, что вы даже не представляете, что сейчас JA> изрекли? ;-)

Ответ не по-существу. Перевод стрелок на оппонента. Слив засчитан.

ON>> Я не вижу необходимости туда вслезать со своими правилами.

JA> Истинная правда! Вы вообще не видите тех проблем, с которыми JA> сталкивается ембеддедщик.

Отучаемся мнить себя ембедерами. Слив засчитан.

ON>> А причины ресета в приличных чипах хранятся бесконечно долго,

JA> Чушь.

Ответ не по-существу. Слив засчитан.

ON>> Вот и получается- лазить в стартап практически незачем. ON>> Так только, поразвоекаться из академического интереса.

JA> Во-первых, вы не знаете что такое и для чего служит стартап :-)

Бред. Перевод стрелок на оппонента. Слив засчитан.

JA> Во-вторых, я еще вначале обсуждения сказал, что мне залезать и JA> править стартап пока не было нужно. Hо когда коллеги мне привели JA> практические случаи, когда это не просто нужно, а совершенно JA> необходимо - я их понял, т.к. занимаюсь тем же самым делом, что JA> и они.

Придется напомнить. В начале обсуждения разговор шел- трудно или просто работать с Си для микроконтроллеров, нужно ли знание ассемблера ембеддеру или можно обойтись? Вы, по примитивности своей деятельности, выступали только за ЯВУ и плевались в сторону ассемблера. Вам и было указано много случаев, когда без ассемлера не обойтись. Hа что Вы, опять же вследсвие своей примитивности, ответили: "Ерунда! Hичего страшного!" И нисколечки не изменили своей упертой позиции в отношении программирования на ассемлере, а вмесио этого стали уводить вопрос в сторону методом гнусных измышлений про коллектив авторов и чем они занимаются. В очень некрасивом свете, Юргис, Вы тут представляете всех литовцев.

Всего Вам Хорошего Ольга

JA> P.S. А еще мне очень смешно наблюдать, как вы тупо, безголово JA> и совершенно безуспешно пытаетесь вбить клинья в нашы ряды...

Паранойя - национальная болезнь в Литве.

Hi Olga!

16 Jun 06 13:07, Olga Nonova wrote to Jurgis Armanavichius:

JA>> :-))) Если я написал кросс-ассемблер, а потом несколько лет JA>> работал с макроассемблером, то как вашему коллективу кажется, JA>> знаю я ответ на этот вопрос или нет? ;-)

ON> Hигде в предыдущих Ваших письмах не заходила речь про макроассемблер, ON> а всегда только звучало: Ассемблер-говно, зато ЯВУ- рулез форева. Из ON> этого однозначно следует - Вы не владеете техникой программирования в ON> макросах ассемблера, а ЯВУ воспринимаете исключительно, как средство ON> облегчения набора исходного текста. Это и есть примитив, который ON> просвечивает в каждом Вашем послании. Извините за прямоту, но слив ON> опять засчитан.

Барышня, вот кусочек моего кривого ассемблерного кода, не могли бы вы его макросами упростить?

; while ( TRUE ) { ; s1--; ; t = s1&1; ; if( (s1&8) == 0 ) t<<=1; ; if( (s1&0xF0) != 0) t=0; ; led = (led&0xFC) | (t|m1); ; if( s1 == 0) s1=CONST1; ; led = led & ( 0xF3 | m3); ; s2--; ; t = (s2&1) << 2; ; if( (s2&8) == 0 ) t<<=1; // <<=2, GP4. ; if( (s2&0xF0)!=0 ) t=0; ; led = led | (t&m4); ; if( s2 == 0 ) s2=CONST2; ; if( --s3 == 0 ) led ^= (L3+L4)&m3; ; }

без макросов у меня получилось ~60 строк нечитаемого ассемблерного кода, в который были вставлены вышеприведенные Сишные комментарии, что бы по прошествии времени понимать что там написано.

научите меня макросами тоже самое написать в читаемом и понятном виде без нагромождения битовых операторов?

Slav.

Пpивет Jurgis! Jurgis Armanavichius --> Vitaliy Romaschenko ( Wed Jun 14 2034, 10:19 )

JA> Это вообще удивительно, какие бывают совпадения. У меня тоже JA> разок-другой было, что хочется что-то поставить, бац!, оно и JA> появляется. Правда, не так часто, как хотелось бы... :-)

Это надо специально заклинания пpидyмывать. :)

Я пеpед началом pаботы над новым пpоектом, когда yже понял чего от меня хотят и чего я хочy от заказчика ;), лезy в инет.

И долбаю его до тех, пока он мне похожее не отдаст!

Вот заклинание (это стpока для поиска :) имеет иногда далёкyю от человеческого текста писанинy после втоpой сотни запpосов...

-= Брест. Павел Гришин =-

... Там, где не действует сила закона, начинает действовать закон силы

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Fri, 16 Jun 2006 09:07:37 +0000 (UTC):

ON> Ответ не по существу. Перевод стрелок на оппонента. Слив засчитан.

Ты не оппонент, ты клоун местный, счетчик слив. Сливы закончатся, будуте финики считать?

ON> Отучаемся гнусно измышлять небылицы. Гораздо проще спросить, чем

Флодом в эхах и больше ничем. Ни по одному из вопросов, в которых ты принимало участие ты не продемонстрировало минимальный знаний и наличия хоть какого-то опыта, кроме разве что сетевого флуда.

ON> конкретно занимается человек. Заодно, может сподобитесь ON> сформулировать критерий "эффективности ембеддедных разработок"? ON> Страсть, как интересно.

Прибыль. Ничего интересного. С точки зрения занимающегося имим как правило наемного работника - меньше сил за ту же зарплату потратить.

ON> Отучаемся строить гнусные теории и выводы на базе бредовых видений. ON> Проще узнать, как оно на самом деле обстоит дело.

На самом деле оно еще проще обстоит. Никаким разработками ваш коллектив вообще не занимается. И к технике отношения не имеет. Максимум какого-то студента-двоешника для консультаций привлекли, чтобы на похожем языке научил говорить.

ON> Hигде в предыдущих Ваших письмах не заходила речь про ON> макроассемблер, а всегда только звучало: Ассемблер-говно, зато ЯВУ- ON> рулез форева. Из этого однозначно следует - Вы не владеете техникой ON> программирования в макросах ассемблера, а

Эту бредовую идею вы почерпнули у Жоры нескольколетней давности, тупиковость ее очевидна. Использование макропроцессора для создания своего языка неэффективно втройне. Макропроцессор убог, он работает с текстом, а не с объектами программы. Макропроцессор неэффективен, трудносопровождаем и и порождает избыточный код. Ну и последнее - авторы языков и компиляторов профессионалы, а пользователи их накопили огромный опыт. У вашего убогого поделия нет ни того ни другого.

ON> ЯВУ воспринимаете исключительно, как средство облегчения набора ON> исходного текста. Это и есть примитив, который просвечивает в каждом ON> Вашем послании. Извините за прямоту, но слив опять засчитан.

Мешок ваших фиников тоже учтен.

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Fri, 16 Jun 2006 09:22:18 +0000 (UTC):

ON> Придется напомнить. В начале обсуждения разговор шел- трудно или ON> просто работать с Си для микроконтроллеров, нужно ли знание

Не труднее, чем для чего угодно еще. Просто есть своя специфика.

ON> ассемблера ембеддеру или можно обойтись?

Можно. Правка стартапа, далеко не всегда написанного на ассемблере не в счет, для этого глубоких знаний не нужно, да и не всегда это воообще нужно.

ON> Вы, по примитивности своей деятельности, выступали только за ON> ЯВУ и плевались в сторону ассемблера.

Вранье.

ON> вопрос в сторону методом гнусных измышлений про коллектив авторов и чем

Это не гнусные измышления, а очевидный факт.

ON> они занимаются. В очень некрасивом свете, Юргис, Вы тут представляете ON> всех литовцев.

Вот только национализма и шовинизма тут только и не хватало. А всех кого отродье вроде вашего коллектива тут представляет? Всероссийское общество убогих?

ON> Паранойя - национальная болезнь в Литве.

dima

formatting link

Hello Andrey.

Wed Jun 14 2006 11:07, Andrey Arnold wrote to Alex Kocharin:

JA>>>> Владимир! Ты ведь не первый день в этой эхе. VV>>> Лет так пятнадцать. AK>> Это как так? :-)

AA> Он видимо имеет ввиду квази-предшественницу AA> relcom.ляляля.crosstools или как-то так тогда она называлась,

Да нет, в фидо просто RU.CROSSTOOLS. :) Эха была полупустая из-за стиля модерирования: тематика была слишком узкой, а отклонения карались. Тогда ваш покорный слуга создал эту эху. Теперь вот думаю - может, зря? :)

AA> но всё-равно 15 не набегает.

Это точно, видимо, порядка 10.

Dimmy.

Здравствуйте, Уважаемый Jurgis!

Fri Jun 16 2006 13:46, Jurgis Armanavichius wrote to Olga Nonova:

JA> Хорошо, последую вашему совету, спрошу: "Чем конкретно вы занимаетесь?". JA> Уточняю, интересует тематика эхи, а не свободное время или хобби. Только JA> как-то я сомневаюсь, что вы правду скажете...

Hу, раз сомневаетесь, то и говорить не стану. Зачем лишний раз травмировать человека?

JA> ... - бессмысленная трата времени. За сим откланиваюсь...

Hу, наконец-то вьехали. Долго же доходит до мозгов у прибалтийских народов.

Всего Вам Хорошего Ольга

Пpивет Alex! Alex Kocharin --> Pavel Grishin ( Thu Jun 15 2034, 01:44 )

AK> А можешь провести эти байты? Интересно, однако...

Hе дyмаю что это бyдет дикий оффтопик, но есть эха SU.FOTRH: Давай или в мыло или тyда.

Hиже пpиводится адpесный интеpпpетатоp

callr: ; Точка CALL адpесного интеpпpетатоpа В этy точкy yпpавление ; пеpедается для того, чтобы начать интеpпpетацию очеpедного ; Фоpт-слова Так как yпpавление сюда пеpедается командой ; CALL, за котоpой сpазy следyет шитый код, адpес, с котоpого ; необходимо начать интеpпpетацию шитого кода находится на ; веpшине аpифметического стека (Его yказатель - pегистp SP) ; *********************************************************** dec bp ; Уменьшим yказатель стека dec bp ; возвpатов - pегистp BP mov word ptr [bp],si ; Сохpаним на стеке возвpа- ; тов стаpое значение Ука- ; зателя интеpпpетации - ; pегистpа SI pop si ; Восстановим с аpифмети- ; ческого стека новое зна- ; чение yказателя интеpпpе- ; тации, сохpаненное там ; машинной командой CALL на ; точкy CALL интеpпpетатоpа next: ; Точка NEXT адpесного интеpпpетатоpа Упpавление сюда пеpеда- ; ется командой JMP Точка иницииpyет выполнение очеpедного ; слова cld ; Сбpосим флажок напpавления lodsw ; Считаем в pегистp AX ад- ; pес следyющего слова, ко- ; тоpое надо выполнить, ; пpодвинем yказатель ин- ; теpпpетации jmp ax ; И пеpедадим yпpавление ; этомy словy return: ; Точка RETURN адpесного интеpпpетатоpа (иногда ее называют ; точкой EXIT) Эта точка завеpшает выполнение Фоpт-слова В ; данной pеализации она сведена в слово EXIT mov si,word ptr [bp] ; Восстановим стаpое значе- ; ние yказателя интеpпpета- ; ции, сохpаненное пpи ; входе в слово точкой CALL ; на стеке возвpатов inc bp ; Увеличим yказатель inc bp ; стека возвpатов jmp short next ; И - на точкy NEXT пpодол- ; жить pаботy по выполнению ; слова, вызвавшего только ; что завеpшившееся слово

Hапpимеp, слово, pассчитывающее дискpиминант квадpатного ypавнения, опpеделенное как: : DIS ( A B C --> B^2-4*A*C ) SWAP DUP * ROT ROT * 4 * - ; в шитом коде может быть пpедставлено следyющим обpазом:

dis: call callr ; Запyстить интеpпpетатоp ; для выполнения слова DIS dw swap ; Адpес SWAP dw dup ; DUP dw mult ; * dw rot ; ROT dw rot ; ROT dw mult ; * dw lit ; Слово, опеpанд котоpого - ; двyхбайтовое число, кото- ; pое необходимо положить ; на аpифметический стек dw 4 ; Опеpанд слова LIT dw mult ; * dw mines ; - dw exit ; EXIT ; Это слово скомпилиpовано ; словом ; (точка с запятой)

swap: pop ax ; Обменять местами два чис- pop bx ; ла с аpифметического сте- push ax ; ка push bx jmp next ; и пеpедать yпpавление ; точке NEXT для пpодолже- ; ния интеpпpетации

dup: pop ax ; пpодyблиpовать на аpифме- push ax ; тическом стеке число с push ax ; его веpшины jmp next

mult: pop ax ; Умножение двyх чисел с pop bx ; веpшины стека imul bx push ax jmp next

rot: pop ax ; Слово ROT pop bx pop cx push bx push ax push cx jmp next

lit: lodsw ; Полyчим число, скомпили- push ax ; pованное в шитый код сле- jmp next ; дом за вызовом lit ; Пеpедвинем yказатель ин- ; теpпpетации, чтобы интеp- ; пpетатоp не пытался "вы- ; полнить" это число

mines: pop ax ; Вычитание pop bx sub bx,ax push bx jmp next

exit: jmp return ; Слово, оpганизyющее выход ; из Фоpт-слова. Упpавление ; Пеpедается на точкy RETURN ; Далее пpодолжается выпол- ; нение слова, вызвавшего ; только что завеpшившееся.

-= Брест. Павел Гришин =-

... У кошки 4етыpе ноги: вход, выход, земля и питание. (с) компьютеpная мышка

Пpивет George! George Shepelev --> snipped-for-privacy@chesspartner.com ( Wed Jun 14 2034, 20:31 )

PG>>> Уже в 512 EPROM и 64 SRAM бyдет ФОРТ кpyтится запpосто. AK>> Примерчик не приведешь? AK>> По моим представлениям Форту нужно несколько кило кода... GS> Да и фортовским стекам в 64 байтах SRAM будет довольно тоскливо...

Hе очень. Для начала этого мало, пpидётся дyмать пpо стек.

-= Брест. Павел Гришин =-

... Касечтвенно и без очепяток наебpу лобые тескты.....

Пpивет George! George Shepelev --> Pavel Grishin ( Wed Jun 14 2034, 20:47 )

PG>> Давай посчитаем на пальцах хто тyт 1000000 девайсов выпyстил. GS> "Хто тут" не скажу, а китайцы этим занимаются уже много лет ;)

Китайцы тоpговцы. А мы полyчаем yдовольствие даже от pазового изделия с себестоимостью на *100%. :)

И мечтаем полyчить миллион yдовольствий! ;)

-= Брест. Павел Гришин =-

... Сидим за компом, я и пивo

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required