AVR data stack and IAR

Mar 06, 2005 52 Replies

NAS>>> ðÌÏÈÏÊ ÏÎ ÐÏÔÏÍÕ, ÞÔÏ _×_ÄÁÎÎÏÍ_ÓÌÕÞÁÅ_ ÒÅËÕÒÓÉÀ ÍÏÖÎÏ NAS>>> ÒÁÚ×ÅÒÎÕÔØ × ÃÉËÌ, KF>> á _×_ËÁËÏÍ_ÓÌÕÞÁÅ_ ÒÅËÕÒÓÉÀ ÎÅÌØÚÑ ÒÁÚ×ÅÒÎÕÔØ × ÃÉËÌ? NAS> ÷ÓÅÇÄÁ ÍÏÖÎÏ, ×ÏÐÒÏÓ ËÁËÏÊ ÃÅÎÏÊ É Ó ËÁËÉÍÉ ÂÏÎÕÓÁÍÉ. NAS> ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÏÎÁ ÒÁÚ×ÏÒÁÞÉ×ÁÅÔÓÑ ÂÅÚ ×ÓÑËÉÈ ÕÓÉÌÉÊ ÓÏ ÓÔÏÒÏÎÙ NAS> ÐÒÏÇÒÁÍÍÉÓÔÁ.

÷ ÜÔÏÍ ÓÌÕÞÁÅ "È×ÏÓÔ ÒÅËÕÒÓÉÉ" ÕÓÔÒÁÎÑÅÔÓÑ ËÏÍÐÉÌÑÔÏÒÏÍ...

KF>> åÓÔØ ÒÑÄ ÍÉÆÏ× × ÏÂÝÅÓÔ×ÅÎÎÏÍ ÓÏÚÎÁÎÉÉ. ÷ÒÏÄÅ ÔÏÇÏ, ÞÔÏ ÒÅËÕÒÓÉÑ ÜÔÏ KF>> ÐÌÏÈÏ, NAS> ÐÒÉ ÂÅÚÄÕÍÎÏÍ ÐÒÉÍÅÎÅÎÉÉ.

á ÒÁÚףÒÎÕÔÁÑ ÒÅËÕÒÓÉÑ, ×ÙÒÏÖÄÁÀÝÁÑÓÑ × ÓÌÏÖÎÙÊ É ÎÅÐÏÎÑÔÎÙÊ ËÏÄ, ÜÔÏ ÂÅÚÕÓÌÏ×ÎÏ ÈÏÒÏÛÏ?

KF>> goto -- ÜÔÏ ÔÏÖÅ ÐÌÏÈÏ, NAS> ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÚÁÈÌÁÍÌÑÅÔ ËÏÄ.

while() { while () { while() { goto abort; ... }}} abort:

goto entry; while (...) { .... entry: ... } âÏÌÅÅ ÄÒÕÇÉÅ ×ÁÒÉÁÎÔÙ? HÅ ÕÐÏÍÉÎÁÀ ÕÖ Ï ÔÒÀËÁÈ Ó ×ÙÞÉÓÌÑÅÍÙÍÉ ÁÄÒÅÓÁÍÉ ÍÅÔÏË. åÓÔØ ÐÒÏÓÔÏ ÒÑÄ ÔÉÐÉÞÎÙÈ ÓÌÕÞÁÅ×. ÷ ÐÅÒ×ÏÍ ÓÌÕÞÁÅ, ËÏÎÅÞÎÏ, ÍÏÖÎÏ ÏÂ×ÅÛÁÔØ ËÏÄ ÒÁÚÎÏÇÏ ÒÏÄÁ ÆÌÁÖËÁÍÉ, ÉÓÐÏÌØÚÏ×ÁÔØ longjmp ÉÌÉ ÄÒÕÇÉÅ ÍÅÔÏÄÙ ÏÂÒÁÂÏÔËÉ ÉÓËÌÀÞÅÎÉÊ, ×Ï ×ÔÏÒÏÍ ÔÏÖÅ... HÏ ÐÏÌÕÞÉÔÓÑ ÔÏÞÎÏ ÔÏ ÖÅ ÓÁÍÏÅ, ËÁË É Ó ÒÅËÕÒÓÉÅÊ. íÎÉÍÏÅ "ÚÁÈÌÁÍÌÅÎÉÅ ËÏÄÁ" ÍÅÎÑÅÔÓÑ ÎÁ ÒÅÁÌØÎÏÅ ÚÁÐÕÔÙ×ÁÎÉÅ ÁÌÇÏÒÉÔÍÁ.

KF>> × ÃÉËÌÅ ÄÌÑ for() ÏÂÑÚÁÔÅÌØÎÏ ÄÏÌÖÎÁ KF>> ÆÉÇÕÒÉÒÏ×ÁÔØ ÐÅÒÅÍÅÎÎÁÑ i, NAS> "index"

indeX. ñ ×ÏÏÂÝÅ ÂÙ ÐÉÓÁÌ ÔÁË:

{ int v; for(v=0; v<n; v++) { blablabla }}

éÂÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅ ÏÂÌÁÓÔÉ ×ÉÄÉÍÏÓÔÉ ÜÔÏÇÏ ÉÎÄÅËÓÁ Ó×ÅÒÈ ÎÅÏÂÈÏÄÉÍÏÇÏ -- ÂÅÚÕÓÌÏ×ÎÏÅ ÁÂÓÏÌÀÔÎÏe ÚÌÏ.

KF>> Á ÎÉËÁË ÎÅ x NAS> "ÎÅÉÚ×ÅÓÔÎÏÅ"

èÏÒÏÛÏ, ÐÕÓÔØ ÂÕÄÅÔ v -- variable.

KF>> ÎÕ É ÍÁÓÓÁ ÄÒÕÇÉÈ. ðÒÏÉÓÈÏÄÉÔ ×ӣ ÜÔÏ, × ËÏÎÅÞÎÏÍ ÓޣÔÅ, KF>> ÏÔ ÒÅÌÉÇÉÏÚÎÙÈ ÐÒÅÄÒÁÓÓÕÄËÏ×. åÓÔØ ×ÅÒÁ, ÞÔÏ ÅÓÔØ ÈÏÒÏÛÏ, Á ÅÓÔØ KF>> ÐÌÏÈÏ. HÁ ÓÁÍÏÍ ÄÅÌÅ ÅÓÔØ ÔÏÌØËÏ ÐÌÏÈÏ. NAS> ïÔÏÖ. ÷ӣ ÐÌÏÈÏ É × ËÁÖÄÏÍ ÓÌÕÞÁÅ ÎÁÄÏ ×ÒÕÞÎÕÀ ×ÙÂÉÒÁÔØ ÍÅÎØÛÅÅ ÉÚ ÚÏÌ.

ìÕÞÛÅÇÏ ÉÚ ÐÌÏÈÏÇÏ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ. óÕÝÅÓÔ×ÕÅÔ ÔÏÌØËÏ ÈÕÄÛÅÅ.

DO>> þÔÏ ÜÔÏ ÚÁ ÂÒÅÄ É ËÁËÏÅ ÏÎ ÉÍÅÅÔ ÏÔÎÏÛÅÎÉÅ Ë ÁÐÐÁÒÁÔÎÏÍÕ ÍÏÎÉÔÏÒÉÎÇÕ DO>> ÐÅÒÅÐÏÌÎÅÎÉÑ ÓÔÅËÁ ÄÁÎÎÙÈ × AVR? ñ ÕÖ ÎÅ ÇÏ×ÏÒÀ Ï ÔÏÍ, ÞÔÏ ÁÐÐÁÒÁÔÎÙÊ DO>> ÍÏÎÉÔÏÒÉÎÇ, ÐÒÏ ËÏÔÏÒÙÊ ÎÁÞÁÌ ÐÉÓÁÔØ ÂÒÅÄ öÏÒÁ ÎÉÞÅÍ ÎÅ ÐÏÍÏÖÅÔ GS> óÌÅÄÉ ÚÁ _Ó×ÏÉÍ_ ÂÒÅÄÏÍ, ÄÁ? GS> é ÏÔÕÞÁÊÓÑ, ÎÁËÏÎÅÃ, ÏÔ ÔÕÐÙÈ ÎÁÅÚÄÏ×. ôÙ ÕÖÅ ÄÁ×ÎÏ ×ÙÛÅÌ ÉÚ ×ÏÚÒÁÓÔÁ, GS> ËÏÇÄÁ ÐÅÓÏÞËÏÍ × ÐÅÓÏÞÎÉÃÅ ËÉÄÁÀÔÓÑ...

úÁËÏÌÅÂÁÌÉ. ëÁËÏÅ ÂÙ ÐÒÁ×ÉÌÏ × ÓËÏÒÉÎÇ ÐÒÏÐÉÓÁÔØ...?

Dima, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

óÒÅÄÁ íÁÒÔ 16 2005 08:49, Dima Orlov wrote to George Shepelev:

÷ ÁÐÐÁÒÁÔÎÏÍ ÓÔÅËÅ x86 - ÔÏÖÅ. óÀÒÐÒÉÚ, ÓÀÒÐÒÉÚ! ;)

DO> ÐÏÔÏÍÕ ÔÁËÏÊ ÓÔÅË ÓÔÅËÏÍ ÄÁÎÎÙÈ É ÎÅ ÎÁÚÙ×ÁÀÔ, öÏÒÁ.

ëÁÖÅÔÓÑ ÎÁÍ ÏÂßÑÓÎÉÌÉ ÐÒÉÞÉÎÕ Ô×ÏÅÇÏ ÈÁÍÓÔ×, Õ ÔÅÂÑ ×ӣ ÐÒÏÄÏÌÖÁÅÔÓÑ ÔÏÔ ÓÁÍÙÊ "ÓÌÏÖÎÙÊ ÐÅÒÉÏÄ ÓÔÁÎÏ×ÌÅÎÉÑ ÌÉÞÎÏÓÔÉ..." ;)))

åÓÌÉ ÁÐÐÁÒÁÔÎÏÇÏ ÎÅÔ - ÄÅÌÁÔØ "ÒÕÞËÁÍÉ" (ÐÏÒÕÞÉÔØ ËÏÍÐÉÌÑÔÏÒÕ "ÓÄÅÌÁÔØ ÒÕÞËÁÍÉ"). åÓÌÉ ÎÁÄÏ - ÐÒÅÄÕÓÍÏÔÒÅ× ËÏÎÔÒÏÌØ ÐÅÒÅÐÏÌÎÅÎÉÑ - ÔÏÖÅ "ÒÕÞËÁÍÉ" (ÜÔÏ ÎÅÓÌÏÖÎÏ).

DO> HÅ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ ËÓÔÁÔÉ.

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

çÅÏÒÇÉÊ

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

Среда Март 09 2005 09:18, Andy Mozzhevilov wrote to Ilja Vlaskin:

IV>> Можно пpоще - опpеделять в pеальном устpойстве. Спеpва память IV>> данных обнуляется, а затем чеpез некотоpое вpемя можно подсчитать IV>> сколько в стековой области ненулевых байт. Это и будет pазмеp IV>> области, используемой стеком. AM> Это можно, но для этого нyжно писать свою встpоеннyю yтилиткy, котоpая AM> этот стек анализиpyет. Потом нyжно иметь еще сpедство отобpажения AM> где-либо pезyльтата. Это все можно сделать в том или ином виде, но не AM> yдобно. Резyльтат не гаpантиpyется, особенно если есть ветви, котоpые AM> выполняются достаточно pедко.

Раз уж пошла такая пьянка...

Общая идея. Предполагается, что контроллер имеет возможность вывести информацию об ошибке (это можно сделать почти всегда, один из наиболее простых и удобных способов - выводить сообщение в UART). Пишется код, на который передаётся управление в случае ошибки, этот код выдаёт дамп состояния контроллера, после чего происходит останов. Для получения информации достаточно самого простенького компа с последовательным портом, на котором запускается терминалка.

Речь зашла об AVR, так что приведу простенький примерчик организации программного стека данных на этом уродце, с использованием регистра X (на конкретном компиляторе не проверяю, при необходимости подгоняйте напильником сами). Поскольку горе-разработчикам AVR-ов вовремя руки не поотбивали за кучу крошечных адресных пространств и кривые мнемоники команд для работы с ними, проверку переполнения стека приходится делать с помощью "трюка", проверяя состояние бита в указателе X (считаем, что стек данных растёт от ячейки 60h до ячейки 7Fh, указатель показывает на место для новой записи)

PUSHD MACRO reg IFDEF debugcontrol PUSH R0 ; сохраняем значение регистра R0 IN R0,SREG ; сохраняем в нём флаги BST R26,7 ; считывание 7-го бита регистра-указателя X во флаг T BRTC corr01 ; корректное значение указателя RCALL displ_error ; индикация ошибки corr01: OUT SREG,R0 ; восстанавливаем флаги POP R0 ; восстанавливаем регистр R0 ENDIF ST X+,reg ; PUSH в стек данных ENDM

POPD MACRO reg LD reg,-X ; POP из стека данных ENDM

В сделанном "по-людски" контроллере жуткое нагромождение внутри блока с условной компиляцией выглядело бы примерно так:

PUSH SREG ; сохраняем флаги CPI R26,end_datastack ; проверка выхода значения указателя за границы BREQ displ_error ; индикация ошибки POP SREG ; восстановление флагов

Георгий

Hello Kirill.

17 Mar 05 08:29, you wrote to Nickita A Startcev:

NAS>> ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÚÁÈÌÁÍÌÑÅÔ ËÏÄ.

KF> while() { KF> while () { KF> while() { KF> goto abort; KF> ... KF> }}} KF> abort:

KF> goto entry; KF> while (...) { KF> .... KF> entry: KF> ... KF> }

KF> âÏÌÅÅ ÄÒÕÇÉÅ ×ÁÒÉÁÎÔÙ?

return

Alexey

Hello, George Shepelev !

öÏÒÁ, ÐÒÉÞÅÍ ÔÕÔ È86? ëÏÇÄÁ ×ÏÐÒÏÓ, É ÜÔÏ ×ÉÄÎÏ × subj, ÐÒÏ ÓÔÅË ÄÁÎÎÙÈ, ËÏÔÏÒÙÊ ÏÒÇÁÎÉÚÕÅÔ IAR ÄÌÑ AVR. ôÏÞÎÅÅ ×ÏÐÒÏÓ ÂÙÌ × ÔÏÍ ËÁË ÏÐÒÅÄÅÌÉÔØ ÅÇÏ ÒÁÚÍÅÒ. HÅ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ ÐÅÒÅÐÏÌÎÅÎÉÅ, Á ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÒ. õÞÉÓØ, öÏÒÁ, ÐÒÅÖÄÅ ÞÅÍ ÏÔ×ÅÞÁÔØ ÞÉÔÁÔØ ×ÏÐÒÏÓ.

öÏÒÁ, ÜÔÏ ÂÅÚÕÓÌÏ×ÎÏ ÎÅ ÓÌÏÖÎÏ, ÔÏÌØËÏ ÜÔÏ ÓÏ×ÅÒÛÅÎÎÏ ÎÅ ÔÏ, ÞÔÏ ÓÐÒÁÛÉ×ÁÌÏÓØ.

üÔÏ, öÏÒÁ, ÔÏÖÅ ÕÖÅ ÏÂÓÕÄÉÌÉ. ïÐÒÅÄÅÌÉÔØ ÐÏ ÒÅÚÕÌØÔÁÔÁÍ ÐÒÏÂÎÙÈ ÚÁÐÕÓËÏ× ÍÁËÓÉÍÁÌØÎÏ ÎÅÏÂÈÏÄÉÍÙÊ ÒÁÚÍÅÒ ÓÔÅËÁ ÐÒÏÂÌÅÍÁÔÉÞÎÏ.

ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.

Michael, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

óÒÅÄÁ íÁÒÔ 16 2005 21:29, Michael Belousoff wrote to George Shepelev:

GS>>>> éÚ ÐÏÓÌÅÄÎÉÈ ÏÄÎÏËpÉÓÔÁÌÌÏË, × ËÏÔÏpÙÈ ×ÓÔpÅÞÁÌ ËÏÎÔpÏÌØ GS>>>> ÓÔÅËÁ, dsPIC ÜÔÏ yÍÅÀÔ (ËÌÀÞÅ×ÙÅ ÓÌÏ×Á Stack limit register). GS>>>> äÏ ÜÔÏÇÏ ÔÏÖÅ ÐÏÐÁÄÁÌÉÓØ, ÎÏ ÎÁÚ×ÁÎÉÊ ÎÅ ÚÁÐÏÍÎÉÌ ××ÉÄy GS>>>> ÎÅÁËÔyÁÌØÎÏÓÔÉ (ÎÅ ÐpÉÐÏÍÎÀ ÓÌyÞÁÑ, ËÏÇÄÁ ÂÙ × ÍÏÉÈ ÐpÏÇpÁÍÍÁÈ GS>>>> ÓÔÅË ÐÅpÅÐÏÌÎÑÌÓÑ)... MB> "...Á ÓÌyÞÁÊ ÂÙ×ÁÅÔ ×ÓÑËÉÊ..." (Ó) ÁÎÅËÄÏÔ.

üÔÉ ÓÌÕÞÁÉ × ÏÓÎÏ×ÎÏÍ ÏÔ ÐÒÏÇÒÁÍÍÉÓÔÁ ÚÁ×ÉÓÑÔ ;-)

AM>>> ôÅÐÅpØ ÎÁ subj ÐÏÓÍÏÔpÉ, ÏÎ ÏÂÙÞÎÏ ÔÁÍ, × ×ÅpÈy, × ÚÁÇÏÌÏ×ËÅ AM>>> ÐÉÓØÍÁ. GS>> ëÔÏ-ÔÏ ÐpÉÓÔÁ×ÉÌ Ë ÇÏÌÏ×Å pÁÚpÁÂÏÔÞÉËÁ ÐÉÓÔÏÌÅÔ É ÚÁÓÔÁ×ÌÑÅÔ ×ӣ GS>> ÄÅÌÁÔØ ÎÁ AVR? ;-) MB> ðÏÓËÏÌØËy ÔÏÔ pÁÚpÁÂÏÔÞÉË - Ñ, ÔÏ Ñ É ÏÔ×ÅÞy.

óÐÁÓÉÂÏ.

MB> ðÉÓÔÏÌÅÔ, ËÏÎÅÞÎÏ, ÎÅ ÐpÉÓÔÁ×ÌÑÀÔ, ÎÏ ÉÚÄÅÌÉÅ ×ÙÐÏÌÎÅÎÏ × "ÖÅÌÅÚÅ", MB> ÚÁÐpÏÇpÁÍÍÉpÏ×ÁÎÏ, ÌÅÖÉÔ ÎÁ ÓËÌÁÄÅ × (ÐÏËÁ) 30 ÜËÚÅÍÐÌÑpÁÈ É ÏÖÉÄÁÅÔ MB> ÏÔÐpÁ×ËÉ ÚÁËÁÚÞÉËy. ÷ ÂÌÉÖÁÊÛÅÅ ×pÅÍÑ ÏÖÉÄÁÅÔÓÑ ÅÇÏ yÓÔÁÎÏ×ËÁ y MB> ÚÁËÁÚÞÉËÁ, × ÄÁÌØÎÅÊÛÅÍ - ÓÏÐpÏ×ÏÖÄÅÎÉÅ. íÅÎÑÔØ ËÏÎÔpÏÌÌÅp ÎÅÌØÚÑ, MB> pÁÚ×Å ÞÔÏ ÓÏ×ÐÁÄÁÀÝÉÊ ÎÏÇÁ × ÎÏÇy Ó ÔÏÊ áôíåçÏÊ-16, ÞÔÏ ÔÁÍ ÓÔÏÉÔ. MB> ðpÁ×ÄÁ, ÔÁËÁÑ ÚÁÍÅÎÁ ÏÄÎÁÖÄÙ yÖÅ ÂÙÌÁ - pÁÎØÛÅ ÐpÅÄÐÏÌÁÇÁÌÁÓØ MB> áôíåçá-8535 × DIP-ËÏpÐyÓÅ. ÷pÏÄÅ ÂÙ ÐÏËÁ ÍÅÎÑÔØ ţ ÂÏÌØÛÅ ÎÅ ÎÁ ÞÔÏ. MB> ôÅÍ ÂÏÌÅÅ ÎÁ ÎÅ-á÷ò.

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

MB> ðÏÞÅÍy ×ÄpyÇ Ñ ÏÚÁÂÏÔÉÌÓÑ ÇÌyÂÉÎÏÊ ÓÔÅËÁ ÄÁÎÎÙÈ?

äÅÊÓÔ×ÉÔÅÌØÎÏ, ÐÏÞÅÍÕ? é ÐÏÞÅÍÕ ÔÏÌØËÏ ÓÅÊÞÁÓ, Á ÎÅ ÔÏÇÄÁ, ËÏÇÄÁ ÎÉËÁËÏÇÏ "ÖÅÌÅÚÁ" ÎÁ ÓËÌÁÄÅ Åݣ ÎÅ ÂÙÌÏ?

MB> äÁ ×ӣ ÐÏÔÏÍy ÖÅ - ÍÎÅ ÜÔÏ ÐpÅÄÓÔÏÉÔ ÓÔÁ×ÉÔØ y ÚÁËÁÚÞÉËÁ É ÐÏÔÏÍ MB> ÓÏÐpÏ×ÏÖÄÁÔØ.

ñ ÐÏÄÏÚÒÅ×ÁÀ, ÚÁËÁÚÞÉËÕ ÁÂÓÏÌÀÔÎÏ ÂÅÚ ÒÁÚÎÉÃÙ, ÞÔÏ ÔÁÍ ÓÏ ÓÔÅËÏÍ ÎÁÄÕÍÁÀÔ ;) ìÉÛØ ÂÙ ÎÏÒÍÁÌØÎÏ ÒÁÂÏÔÁÌÏ.

MB> ðÏËÁ ×pÏÄÅ ×ӣ pÁÂÏÔÁÅÔ, ÎÏ ÞÔÏ ÐÏÔÏÍ ÂyÄÅÔ? äÁ ÈpÅÎ ÚÎÁÅÔ...

é ÔÙ ÓÞÉÔÁÅÛØ, ÞÔÏ "ÐÏÔÏÍ" ÍÏÇÕÔ ×ÏÚÎÉËÎÕÔØ ÐÒÏÂÌÅÍÙ ÉÓËÌÀÞÉÔÅÌØÎÏ ÉÚ-ÚÁ ÓÔÅËÁ? ðÏ ×ÓÅÊ ×ÉÄÉÍÏÓÔÉ Õ ÔÅÂÑ ÅÓÔØ ÓÕÝÅÓÔ×ÅÎÎÙÅ ÏÓÎÏ×ÁÎÉÑ ÔÁË ÄÕÍÁÔØ, ÎÏ ÔÙ Ï ÎÉÈ ÕÐÏÒÎÏ ÍÏÌÞÉÛØ.

MB> é ÏÐÑÔØ-ÔÁËÉ, pyËÉ ÞÅÛyÔÓÑ ×ӣ ÎÅ ÔÁË ÓÄÅÌÁÔØ.

ïÞÅÎØ ÐÏÈÏÖÅ ÎÁ ÓÏÐÒÏ×ÏÖÄÅÎÉÅ _ÞÕÖÏÊ_ ÒÁÚÒÁÂÏÔËÉ ÂÅÚ ÎÏÒÍÁÌØÎÏÊ ÄÏËÕÍÅÎÔÁÃÉÉ. ïÒÇÁÎÉÚÁÃÉÏÎÎÁÑ ÐÒÏÂÌÅÍÁ. ë ÓÏÖÁÌÅÎÉÀ ÍÅÓÔÎÏÅ ÎÁÞÁÌØÓÔ×Ï ÏÞÅÎØ ÌÀÂÉÔ ÎÁÓÔÕÐÁÔØ ÎÁ ÔÁËÉÅ ÇÒÁÂÌÉ, ÉÍ ËÁÖÅÔÓÑ, ÞÔÏ ÏÎÉ "ÜËÏÎÏÍÑÔ"...

MB> ñ ÄÁÖÅ ÐÌÁÔÙ ÜÔÏÇÏ ÉÚÄÅÌÉÑ ÄÏÍÏÊ ÐpÉΣÓ, ÐÏ ×ÅÞÅpÁÍ pÁÚ×ÌÅËÁÀÓØ...

óËÏÌØËÏ ÔÁÍ Ó×ÏÂÏÄÎÏÊ ÐÁÍÑÔÉ ÐÒÏÇÒÁÍÍ ÏÓÔÁÌÏÓØ, ÅÓÔØ ÌÉ Ó×ÏÂÏÄÎÙÅ ÎÏÖËÉ ËÏÎÔÒÏÌÌÅÒÁ? é, ÇÌÁ×ÎÏÅ, ÅÓÔØ ÌÉ ÎÏÒÍÁÌØÎÙÅ ÉÓÈÏÄÎÉËÉ Ó ÐÏÄÒÏÂÎÙÍ ËÏÍÍÅÎÔÁÒÉÅÍ, Á ÔÁËÖÅ ×ÎÑÔÎÏÅ ôú Ó ÏÐÉÓÁÎÉÅÍ ÒÅÖÉÍÏ×, ÔÒÅÂÏ×ÁÎÉÊ, ÐÒÏÔÏËÏÌÏ× É Ô.Ð.?

çÅÏÒÇÉÊ

ðÒÉ×ÅÔ, Kirill !

17 Mar 05 , 08:29 Kirill Frolov ÐÉÓÁÌ Ë Nickita A Startcev:

KF>>> åÓÔØ ÒÑÄ ÍÉÆÏ× × ÏÂÝÅÓÔ×ÅÎÎÏÍ ÓÏÚÎÁÎÉÉ. ÷ÒÏÄÅ ÔÏÇÏ, ÞÔÏ KF>>> ÒÅËÕÒÓÉÑ ÜÔÏ ÐÌÏÈÏ, NAS>> ÐÒÉ ÂÅÚÄÕÍÎÏÍ ÐÒÉÍÅÎÅÎÉÉ.

KF> á ÒÁÚףÒÎÕÔÁÑ ÒÅËÕÒÓÉÑ, ×ÙÒÏÖÄÁÀÝÁÑÓÑ × ÓÌÏÖÎÙÊ É ÎÅÐÏÎÑÔÎÙÊ ËÏÄ, KF> ÜÔÏ ÂÅÚÕÓÌÏ×ÎÏ ÈÏÒÏÛÏ?

ñ ÎÉÇÄÅ ÎÅ ÇÏ×ÏÒÀ ÐÒÏ ÂÅÚÕÓÌÏ×ÎÏÓÔØ. óÌÕÞÁÉ - ÏÎÉ ÒÁÚÎÙÅ ÂÙ×ÁÀÔ.

KF>>> goto -- ÜÔÏ ÔÏÖÅ ÐÌÏÈÏ, NAS>> ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÚÁÈÌÁÍÌÑÅÔ ËÏÄ.

void do_something() { KF> while() { KF> while () { KF> while() { return; KF> goto abort; KF> ... KF> }}} KF> abort: }

ôÏÖÅ ÎÁ ÍÏÊ ×ÚÇÌÑÄ ÓÔÒÁÎÙÊ ËÏÄ. íÎÅ ËÁÖÅÔÓÑ, ÞÔÏ ÐÅÒ×ÕÀ ÞÁÓÔØ ÍÏÖÎÏ ÏÆÏÒÍÉÔØ ÏÔÄÅÌØÎÏÊ ÆÕÎËÃÉÅÊ, ÎÏ, ÐÏ×ÔÏÒÀÓØ, ×ÏÚÍÏÖÎÏ × ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ÜÔÏ ÂÕÄÅÔ ÓÁÍÙÍ ÒÁÚÕÍÎÙÍ ×ÙÈÏÄÏÍ. KF> goto entry; KF> while (...) { KF> .... KF> entry: KF> ... KF> }

KF> ñ ×ÏÏÂÝÅ ÂÙ ÐÉÓÁÌ ÔÁË:

KF> { int v; for(v=0; v<n; v++) { KF> blablabla KF> }}

KF> éÂÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅ ÏÂÌÁÓÔÉ ×ÉÄÉÍÏÓÔÉ ÜÔÏÇÏ ÉÎÄÅËÓÁ Ó×ÅÒÈ KF> ÎÅÏÂÈÏÄÉÍÏÇÏ -- ÂÅÚÕÓÌÏ×ÎÏÅ ÁÂÓÏÌÀÔÎÏe ÚÌÏ.

âÒÒ.. ñ ÂÙ ÒÁÄÉ ÜÔÏÇÏ ÐÒÉ ÐÒÏÞÉÈ ÒÁ×ÎÙÈ ÐÅÒÅÛÅÌ ÂÙ ÎÁ c++.

NAS>> ïÔÏÖ. ÷ӣ ÐÌÏÈÏ É × ËÁÖÄÏÍ ÓÌÕÞÁÅ ÎÁÄÏ ×ÒÕÞÎÕÀ ×ÙÂÉÒÁÔØ ÍÅÎØÛÅÅ NAS>> ÉÚ ÚÏÌ.

KF> ìÕÞÛÅÇÏ ÉÚ ÐÌÏÈÏÇÏ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ. óÕÝÅÓÔ×ÕÅÔ ÔÏÌØËÏ ÈÕÄÛÅÅ.

:)

. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... ûÉÒÉÎÁ É ÇÌÕÂÉÎÁ... ûÉÒÉÎËÁ É ÇÌÕÂÉÎËÁ...

Dima, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

ðÑÔÎÉÃÁ íÁÒÔ 18 2005 13:18, Dima Orlov wrote to George Shepelev:

ðÏ ÈÏÄÕ ÏÂÓÕÖÄÅÎÉÑ ÐÏÑ×ÉÌÓÑ ÄÒÕÇÏÊ ×ÏÐÒÏÓ, ÅÇÏ É ÓÔÁÌÉ ÏÂÓÕÖÄÁÔØ. ÷ÎÉÍÁÔÅÌØÎÅÊ ÜÈÕ ÞÉÔÁÊ, ÆÌÅÊÍÅÒÏË!

çÅÏÒÇÉÊ

NAS>>> ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÚÁÈÌÁÍÌÑÅÔ ËÏÄ. KF>> while() { KF>> while () { KF>> while() { KF>> goto abort; KF>> ... KF>> }}} KF>> abort:

KF>> goto entry; KF>> while (...) { KF>> .... KF>> entry: KF>> ... KF>> }

KF>> âÏÌÅÅ ÄÒÕÇÉÅ ×ÁÒÉÁÎÔÙ? AB> return

á ÔÅÐÅÒØ ÏÂßÑÓÎÉ, ËÁË ×ӣ ÉÚ ÏÂÌÁÓÔÉ ×ÉÄÉÍÏÓÔÉ ÆÕÎËÃÉÉ A ÐÅÒÅÎÅÓÔÉ × ×ÙÚ×ÁÎÎÕÀ ÅÊ ÆÕÎËÃÉÀ B. ñ ÚÎÁÀ, gcc ÕÍÅÅÔ ÔÁËÕÀ ×ÏÚÍÏÖÎÏÓÔØ. ÷ ÑÚÙËÁÈ "ÐÏÄ×ÙÛÅÎÎÏÇÏ ÕÒÏ×ÎÑ" ÜÔÏ ÏÂÙÞÎÏ ÎÅ ÐÒÏÂÌÅÍÁ. ÷ ×ÏÔ ANSI C ÔÁËÏÇÏ ÎÅ ÐÒÅÄÕÓÍÁÔÒÉ×ÁÅÔ. äÁ É ËÏÄ ÐÏÌÕÞÁÅÔÓÑ, ÎÅÜÆÆÅËÔÉ×ÎÙÊ...
ðpÉ×ÅÔ, George. ÷ÏÔ ÞÔÏ George Shepelev wrote to Michael Belousoff:

MB>> ðÉÓÔÏÌÅÔ, ËÏÎÅÞÎÏ, ÎÅ ÐpÉÓÔÁ×ÌÑÀÔ, ÎÏ ÉÚÄÅÌÉÅ ×ÙÐÏÌÎÅÎÏ × MB>> "ÖÅÌÅÚÅ", ÚÁÐpÏÇpÁÍÍÉpÏ×ÁÎÏ, ÌÅÖÉÔ ÎÁ ÓËÌÁÄÅ × (ÐÏËÁ) 30 ÜËÚÅÍÐÌÑpÁÈ MB>> É ÏÖÉÄÁÅÔ ÏÔÐpÁ×ËÉ ÚÁËÁÚÞÉËy. ÷ ÂÌÉÖÁÊÛÅÅ ×pÅÍÑ ÏÖÉÄÁÅÔÓÑ ÅÇÏ MB>> yÓÔÁÎÏ×ËÁ y ÚÁËÁÚÞÉËÁ, × ÄÁÌØÎÅÊÛÅÍ - ÓÏÐpÏ×ÏÖÄÅÎÉÅ. íÅÎÑÔØ MB>> ËÏÎÔpÏÌÌÅp ÎÅÌØÚÑ, pÁÚ×Å ÞÔÏ ÓÏ×ÐÁÄÁÀÝÉÊ ÎÏÇÁ × ÎÏÇy Ó ÔÏÊ MB>> áôíåçÏÊ-16, ÞÔÏ ÔÁÍ ÓÔÏÉÔ. ðpÁ×ÄÁ, ÔÁËÁÑ ÚÁÍÅÎÁ ÏÄÎÁÖÄÙ yÖÅ ÂÙÌÁ - MB>> pÁÎØÛÅ ÐpÅÄÐÏÌÁÇÁÌÁÓØ áôíåçá-8535 × DIP-ËÏpÐyÓÅ. ÷pÏÄÅ ÂÙ ÐÏËÁ MB>> ÍÅÎÑÔØ ţ ÂÏÌØÛÅ ÎÅ ÎÁ ÞÔÏ. ôÅÍ ÂÏÌÅÅ ÎÁ ÎÅ-á÷ò.

GS> ðÏÎÑÔÎÏ. ìÉÂÏ ÉÚÎÁÞÁÌØÎÏ ÐÌÏÈÏ ÐpÏÄyÍÁÎÁ pÅÁÌÉÚÁÃÉÑ, ÌÉÂÏ ÔÉÐÉÞÎÁÑ GS> ÐpÏÂÌÅÍÁ ÓÏÐpÏ×ÏÖÄÅÎÉÑ ÞyÖÏÇÏ ÐpÏÅËÔÁ. ðÅp×ÏÅ - ÂÅÚÇpÁÍÏÔÎÏÓÔØ GS> pÁÚpÁÂÏÔÞÉËÁ × ÏÂÌÁÓÔÉ ÐpÏÄyÍÙ×ÁÎÉÑ ÐpÏÅËÔÁ, ×ÔÏpÏÅ - ÎÁÉ×ÎÏÓÔØ GS> ÓÐÅÃÉÁÌÉÓÔÁ, ÂÅpyÝÅÇÏÓÑ ÚÁ ÚÁ×ÅÄÏÍÏ ÐpÏÔÉ×ÎÏÅ ÚÁÎÑÔÉÅ...

MB>> ðÏÞÅÍy ×ÄpyÇ Ñ ÏÚÁÂÏÔÉÌÓÑ ÇÌyÂÉÎÏÊ ÓÔÅËÁ ÄÁÎÎÙÈ?

GS> äÅÊÓÔ×ÉÔÅÌØÎÏ, ÐÏÞÅÍy? é ÐÏÞÅÍy ÔÏÌØËÏ ÓÅÊÞÁÓ, Á ÎÅ ÔÏÇÄÁ, ËÏÇÄÁ GS> ÎÉËÁËÏÇÏ "ÖÅÌÅÚÁ" ÎÁ ÓËÌÁÄÅ Åݣ ÎÅ ÂÙÌÏ?

óÍ. ÎÉÖÅ.

MB>> äÁ ×ӣ ÐÏÔÏÍy ÖÅ - ÍÎÅ ÜÔÏ ÐpÅÄÓÔÏÉÔ ÓÔÁ×ÉÔØ y ÚÁËÁÚÞÉËÁ É ÐÏÔÏÍ MB>> ÓÏÐpÏ×ÏÖÄÁÔØ.

GS> ñ ÐÏÄÏÚpÅ×ÁÀ, ÚÁËÁÚÞÉËy ÁÂÓÏÌÀÔÎÏ ÂÅÚ pÁÚÎÉÃÙ, ÞÔÏ ÔÁÍ ÓÏ ÓÔÅËÏÍ GS> ÎÁÄyÍÁÀÔ ;) ìÉÛØ ÂÙ ÎÏpÍÁÌØÎÏ pÁÂÏÔÁÌÏ.

úÁÔÏ ÍÎÅ ÎÅ ÂÅÚ pÁÚÎÉÃÙ. ñ ÎÅ ÈÏÞy ÐÏÑ×ÌÅÎÉÑ ÎÅÏÂßÑÓÎÉÍÙÈ ÇÌÀËÏ×.

MB>> ðÏËÁ ×pÏÄÅ ×ӣ pÁÂÏÔÁÅÔ, ÎÏ ÞÔÏ ÐÏÔÏÍ ÂyÄÅÔ? äÁ ÈpÅÎ ÚÎÁÅÔ...

GS> é ÔÙ ÓÞÉÔÁÅÛØ, ÞÔÏ "ÐÏÔÏÍ" ÍÏÇyÔ ×ÏÚÎÉËÎyÔØ ÐpÏÂÌÅÍÙ ÉÓËÌÀÞÉÔÅÌØÎÏ GS> ÉÚ-ÚÁ ÓÔÅËÁ? ðÏ ×ÓÅÊ ×ÉÄÉÍÏÓÔÉ y ÔÅÂÑ ÅÓÔØ ÓyÝÅÓÔ×ÅÎÎÙÅ ÏÓÎÏ×ÁÎÉÑ ÔÁË GS> ÄyÍÁÔØ, ÎÏ ÔÙ Ï ÎÉÈ yÐÏpÎÏ ÍÏÌÞÉÛØ.

äÅÆÉÃÉÔ ïúõ, ÐÁÎÉÍÁÉÛÛÛ...

MB>> é ÏÐÑÔØ-ÔÁËÉ, pyËÉ ÞÅÛyÔÓÑ ×ӣ ÎÅ ÔÁË ÓÄÅÌÁÔØ.

GS> ïÞÅÎØ ÐÏÈÏÖÅ ÎÁ ÓÏÐpÏ×ÏÖÄÅÎÉÅ _ÞyÖÏÊ_ pÁÚpÁÂÏÔËÉ ÂÅÚ ÎÏpÍÁÌØÎÏÊ GS> ÄÏËyÍÅÎÔÁÃÉÉ. ïpÇÁÎÉÚÁÃÉÏÎÎÁÑ ÐpÏÂÌÅÍÁ. ë ÓÏÖÁÌÅÎÉÀ ÍÅÓÔÎÏÅ ÎÁÞÁÌØÓÔ×Ï GS> ÏÞÅÎØ ÌÀÂÉÔ ÎÁÓÔyÐÁÔØ ÎÁ ÔÁËÉÅ ÇpÁÂÌÉ, ÉÍ ËÁÖÅÔÓÑ, ÞÔÏ ÏÎÉ GS> "ÜËÏÎÏÍÑÔ"...

ôÙ ÎÅÐpÁ×. ÷ pÁÚpÁÂÏÔËÅ ÖÅÌÅÚÁ Ñ ÐpÉÎÉÍÁÌ yÞÁÓÔÉÅ, ÓÏÆÔ - ÐÉÓÁÌ Ñ, É Ó ÓÁÍÏÇÏ ÎÁÞÁÌÁ. á ÖÅÌÁÎÉÅ ÓÄÅÌÁÔØ ÎÅ ÔÁË, ËÁË ÓÄÅÌÁÎÏ, ÉÎÏÇÄÁ ÐÏÑ×ÌÑÅÔÓÑ. ïÓÏÂÅÎÎÏ × ÎÁÞÁÌÅ ÏÓ×ÏÅÎÉÑ ËÁËÏÇÏ-ÔÏ ÎÏ×ÏÇÏ ÄÌÑ ÓÅÂÑ ÐpÏÄyËÔÁ. á÷ò, ÎÁÐpÉÍÅp. õ ÍÅÎÑ ÎÁ á÷òÅ ÜÔÏ - ×ÔÏpÏÅ ÉÚÄÅÌÉÅ, ÔÁË ÞÔÏ ÉÍÅÀ ÐpÁ×Ï.

MB>> ñ ÄÁÖÅ ÐÌÁÔÙ ÜÔÏÇÏ ÉÚÄÅÌÉÑ ÄÏÍÏÊ ÐpÉΣÓ, ÐÏ ×ÅÞÅpÁÍ MB>> pÁÚ×ÌÅËÁÀÓØ...

GS> óËÏÌØËÏ ÔÁÍ Ó×ÏÂÏÄÎÏÊ ÐÁÍÑÔÉ ÐpÏÇpÁÍÍ ÏÓÔÁÌÏÓØ,

ïÓÔÁÌÏÓØ ÎÅÍÎÏÇÏ - ÐÏÓÌÅ ×ËÌÁÄÙ×ÁÎÉÑ ÔyÄÁ ÄÏÐÏÌÎÉÔÅÌØÎÏÇÏ ÓÅp×ÉÓÁ. HÏ ÎÁ ÎÅËÏÔÏpÏÅ ÄÏÐÉÓÙ×ÁÎÉÅ (ÅÓÌÉ ÞÔÏ) - ÍÅÓÔÁ È×ÁÔÉÔ.

GS> ÅÓÔØ ÌÉ Ó×ÏÂÏÄÎÙÅ ÎÏÖËÉ ËÏÎÔpÏÌÌÅpÁ?

äÁ.

GS> é, ÇÌÁ×ÎÏÅ, ÅÓÔØ ÌÉ ÎÏpÍÁÌØÎÙÅ ÉÓÈÏÄÎÉËÉ Ó GS> ÐÏÄpÏÂÎÙÍ ËÏÍÍÅÎÔÁpÉÅÍ, Á ÔÁËÖÅ ×ÎÑÔÎÏÅ ôú Ó ÏÐÉÓÁÎÉÅÍ pÅÖÉÍÏ×, GS> ÔpÅÂÏ×ÁÎÉÊ, ÐpÏÔÏËÏÌÏ× É Ô.Ð.?

äÁ.

Michael G. Belousoff

formatting link
mailto: mickbell(dog)r66(dot)ru

... ==== ðpÏÂÌÅÍy ÎÁÄÏ pÅÛÁÔØ ÄÏ ÔÏÇÏ, ËÁË ÏÎÁ ÐÏÑ×ÉÔÓÑ. ====

Hello Kirill.

19 Mar 05 21:58, you wrote to me:

KF>>> âÏÌÅÅ ÄÒÕÇÉÅ ×ÁÒÉÁÎÔÙ? AB>> return KF> á ÔÅÐÅÒØ ÏÂßÑÓÎÉ, ËÁË ×ӣ ÉÚ ÏÂÌÁÓÔÉ ×ÉÄÉÍÏÓÔÉ ÆÕÎËÃÉÉ A ÐÅÒÅÎÅÓÔÉ × KF> ×ÙÚ×ÁÎÎÕÀ ÅÊ ÆÕÎËÃÉÀ B.

ïÂßÑÓÎÉÔØ ÎÅ ÍÏÇÕ, ÎÏ ÍÎÅ, ÏÂÙÞÎÏ, ÕÄÁÅÔÓÑ.

Alexey

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required