NAS>>> ðÌÏÈÏÊ ÏÎ ÐÏÔÏÍÕ, ÞÔÏ _×_ÄÁÎÎÏÍ_ÓÌÕÞÁÅ_ ÒÅËÕÒÓÉÀ ÍÏÖÎÏ NAS>>> ÒÁÚ×ÅÒÎÕÔØ × ÃÉËÌ, KF>> á _×_ËÁËÏÍ_ÓÌÕÞÁÅ_ ÒÅËÕÒÓÉÀ ÎÅÌØÚÑ ÒÁÚ×ÅÒÎÕÔØ × ÃÉËÌ? NAS> ÷ÓÅÇÄÁ ÍÏÖÎÏ, ×ÏÐÒÏÓ ËÁËÏÊ ÃÅÎÏÊ É Ó ËÁËÉÍÉ ÂÏÎÕÓÁÍÉ. NAS> ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÏÎÁ ÒÁÚ×ÏÒÁÞÉ×ÁÅÔÓÑ ÂÅÚ ×ÓÑËÉÈ ÕÓÉÌÉÊ ÓÏ ÓÔÏÒÏÎÙ NAS> ÐÒÏÇÒÁÍÍÉÓÔÁ.
÷ ÜÔÏÍ ÓÌÕÞÁÅ "È×ÏÓÔ ÒÅËÕÒÓÉÉ" ÕÓÔÒÁÎÑÅÔÓÑ ËÏÍÐÉÌÑÔÏÒÏÍ...AVR data stack and IAR
Mar 06, 2005
52 Replies
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