AVR GCC&IAR

Jan 06, 2004 Last reply: 22 years ago 1699 Replies

Hello George.

12 Feb 04 22:21, you wrote to me:

GS> Втрое больше команд, только чтобы получить любимый сишниками GS> знаковый int. Понял.

Теперь понял, почему в Си int - машиннозависимый?

AB>> Вообще-то работа с байтами нужна в основном для обработки строк. AB>> А в строках байты - беззнаковые. GS> Достаточно типичная задача - работа с байтовыми массивами данных. GS> Получается вчетверо компактнее, чем в 32-битном варианте. А знаковые GS> это данные или беззнаковые - отдельный вопрос...

Инерция восьмибитного мышления? ;) Я позаменял в программе char на int (там где можно) и все стало пучком. В байтовом формате осталась только обработка строк.

AB>> Конкретно у At91m40800 - не густо. AB>> Flash - нет. GS> Упс! Защиты прошивки нет - интерес резко падает... :-(

Кому как. Hо AT91 - не единственный представитель АРМ.

GS>>> Работе с "плавающей точкой"? AB>> Из соображений потребления, АРМ не содержит команд работы с AB>> плавающей точкой, но имеет механизм добавления их туда. GS> Что за механизм? В двух словах...

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

Кстати, у него есть команда Multiply Accumulate - Умножение с накоплением. Типично ДСП-шная команда.

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

Alexey

Привет Alexey!

12 Feb 04 13:51, Alexey Boyko писал Alex Mogilnikov:

AM>> ldmea fp, {sp,pc}

AB> Это вариант, если в функции есть кадр стека. AB> Если нет - то просто AB> ldmea sp!, {pc}

Да.

AB> Кстати, ты восклицательный знак забыл вставить.

Hет, fp вызвавшей функции должен из стека восстанавливаться:

ldmea fp, {r4,r5,r6,r7,fp,sp,pc}

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Искать смысл - бессмысленно...

Hello, George!

Чет Фев 12 2004, George Shepelev писал к Maxim Polyanskiy по поводу "АРМ." MP>> Hапример абсолютно разные мнемоники в 16-32 битном режимах. Все MP>> время надо помнить какой режим включен в данный момент и MP>> перестраивать всю логику. GS> А действительно так надо непрерывно переключаться? ;) Да. 16-ти битный режим дает очень серьъезную экономию в коде, 32 в скорости строковых и блочных операций. Есть компиллеры которые умеют сами переключатся анализируя функции. GS> Подозреваю, что у си тут никаких проблем. Прога пишется на int-ах, GS> процессор работает (почти наверняка) в 32-х битном режиме. Оверхед 32/16 = 80% GS> Значит пиши для него на сях. Это я тебе говорю ;) "Hедождетесь" ;) GS> Георгий WBR! Maxim Polyanskiy.

GS>>>>> óÔÁÎÄÁÒÔ ÐÅÒÅÞÉÔÁÊ. ÷ÎÉÍÁÔÅÌØÎÏ. KF>>>> ISO9899-1999. short -- 16 ÒÁÚÒÑÄÏ×, int >= 16 ÒÁÚÒÑÄÏ×, long

÷ ËÁËÉÈ ÄÏËÕÍÅÎÔÁÈ ÉÍÅÀÔÓÑ ÏÔÌÉÞÉÑ? ëÒÉ×ÙÅ ÐÅÒÅ×ÏÄÙ K&R ÄÏËÕÍÅÎÔÁÍÉ ÎÅ ÓÞÉÔÁÀÔÓÑ, × ÏÔÌÉÞÉÉ ÏÔ ÏÆÉÃÉÁÌØÎÏ ÐÕÂÌÉËÕÅÍÙÈ ÓÔÁÎÄÁÒÔÏ×.

GS>>> "HÏ×ÙÊ" ÓÔÁÎÄÁÒÔ ÎÅ ÄÏÂÁ×ÉÌ ÏÄÎÏÚÎÁÞÎÏÓÔÉ, ÚÁÔÏ ÎÅÉÚÂÅÖÎÏ KF>> ë ÞÅÍÕ ÏÎ ÄÏÌÖÅÎ ÄÏÂÁ×ÉÔØ ÏÄÎÏÚÎÁÞÎÏÓÔÉ? ôÙ ÓÁÍ ÓÅÂÅ ÕÖÅ KF>> ÐÒÏÔÉ×ÏÒÉÛØ, ÏÎ ÔÁËÉ ÓÔÒÁÄÁÅÔ ÐÅÒÅÍÅÎÞÉ×ÏÓÔØÀ, ÉÌÉ ÎÁÏÂÏÒÏÔ? KF>> int ËÁË ÂÙÌ ÐÅÒÅÍÅÎÎÏÇÏ ÒÁÚÍÅÒÁ, ÔÁË É ÏÓÔÁÌÓÑ. GS> âÙÌ ÒÁ×ÅÎ ÒÁÚÒÑÄÎÏÓÔÉ áìõ ÐÒÏÃÅÓÓÏÒÁ, ÐÏÄ ËÏÔÏÒÙÊ ×ÅÌÁÓØ ËÏÍÐÉÌÑÃÉÑ GS> (Ô.Å. ÍÏÇ ÂÙÔØ 8-ÍÉ ÂÉÔÎÙÍ).

âÙÌ ÇÄÅ? HÁÚÏ×É ËÏÎËÒÅÔÎÙÊ ÄÏËÕÍÅÎÔ, ÇÄÅ ÄÅËÌÁÒÉÒÕÅÔÓÑ int ÐÒÏÉÚ×ÏÌÚÎÏÇÏ ÒÁÚÍÅÒÁ? á ÎÁÓޣÔ "ÂÙÌ" -- PDP-11 16-ÒÁÚÒÑÄÎÁÑ ÍÁÛÉÎÁ...

GS>>> ÐÒÉ×ÅģÔ Ë ÐÏÔÅÒÅ ÜÆÆÅËÔÉ×ÎÏÓÔÉ ÎÁ 8-ÍÉ ÂÉÔÎÙÈ ÐÒÏÃÅÓÓÏÒÁÈ, GS>>> ËÏÔÏÒÙÅ ÓÕÝÅÓÔ×ÅÎÎÙ × ÜÈÏÔÁÇÅ... KF>> ôÅÂÑ ÞÔÏ, ÚÁÓÔÁ×ÌÑÀÔ ÉÍÅÎÎÏ int ÉÓÐÏÌØÚÏ×ÁÔØ? GS> íÎÅ ÍÏÖÅÔ ÐÒÉÊÔÉ × ÇÏÌÏ×Õ ÉÓÐÏÌØÚÏ×ÁÔØ ÇÏÔÏ×ÙÅ ÐÒÏÇÒÁÍÍÙ É ÂÉÂÌÉÏÔÅËÉ. GS> ÷ ËÏÔÏÒÙÈ ÉÓÐÏÌØÚÏ×ÁÎ int.

é ÞÔÏ? ôÙ ÍÏÖÅÛØ ÐÒÉ×ÅÓÔÉ ÈÏÔØ ÏÄÉÎ óõýåóô÷õàýéê Há óåçïäHñûHéê íïíåHô ëïíðéìñôïò ó 8-òáúòñäHùí INT?

GS> ðÉÓÁÔØ ×ӣ Ó ÎÕÌÑ, ËÏÎÅÞÎÏ, ËÒÕÔÏ, ÎÏ ÕÖ ÏÞÅÎØ ÍÁÌÏÜÆÆÅËÔÉ×ÎÏ...

äÁ ÚÁÍÅÔÎÏ. õÒÏ×ÅÎØ ÂÒÅÄÁ ÐÏÔÒÑÓÁÅÔ ×ÏÏÂÒÁÖÅÎÉÅ. íÎÅ ËÁÖÅÔÓÑ, ÔÙ ÄÁÖÅ ÎÅ ÐÒÅÄÓÔÁ×ÌÑÅÛØ Ï ޣÍ ÇÏ×ÏÒÉÛØ.

KF>>>> ôÏÇÄÁ É Õ C ÅÓÔØ ÜÔÏ ÄÏÓÔÏÉÎÓÔ×Ï: #define int \#error... GS>>> ñ ÇÏ×ÏÒÀ Ï ÒÅÁÌÉÚÁÃÉÉ ÑÚÙËÁ "ÐÏ ÄÅÆÏÌÔÕ", Á ÎÅ Ï ×ÏÚÍÏÖÎÏÓÔÉ KF>> HÕ ÔÁË É ÞÅÍ ÔÅÂÅ ÍÅÛÁÅÔ ÎÁÌÉÞÉÅ int "ÐÏ ÄÅÆÏÌÔÕ", ÅÓÌÉ ÔÙ ÅÇÏ ÎÅ KF>> ÉÓÐÏÌØÚÕÅÛØ? GS> äÒÕÇÉÅ ×Ï×ÓÀ ÉÓÐÏÌØÚÕÀÔ. ÷ ÔÅÈ-ÖÅ ÂÉÂÌÉÏÔÅËÁÈ...

é ÞÔÏ ÓÔÒÁÎÎÏ -- ÂÉÂÌÉÏÔÅËÉ ÒÁÂÏÔÁÀÔ, ÎÁ ÓÁÍÙÈ ÒÁÚÎÏÏÂÒÁÚÎÙÈ ü÷í...

KF>>>>>> ÞÔÏ × ΣÍ ÎÅÔ "ÂÙÓÔÒÏÇÊ ÐÅÒÅÍÅÎÎÏÊ" GS>>>>> ëÏÇÄÁ ÕÖÅ ÐÏÊÍÕÔ, ÞÔÏ ÇÌÕÐÏ ÓÞÉÔÁÔØ "ÂÙÓÔÒÏ É ÎÅÐÒÁ×ÉÌØÎÏ"?.. KF>>>> HÉËÔÏ ÖÅ ÎÅ ÚÁÓÔÁ×ÌÑÅÔ? GS>>> ðÒÏ×ÏÃÉÒÕÀÔ. KF>> ëÔÏ ËÏÎËÒÅÔÎÏ? GS> ìÀÂÉÔÅÌÉ ÄÅÍÏÎÓÔÒÉÒÏ×ÁÔØ "ÜÆÆÅËÔÉ×ÎÙÅ" ÐÒÉÍÅÒÙ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ.

ëÏÎËÒÅÔÎÏ, ÏÇÌÁÓÉÔÅ ÐÏÉͣÎÎÙÊ ÓÐÉÓÏË.

GS> óËÏÌØËÏ ÒÁÚ, Ë ÐÒÉÍÅÒÕ, ÏÂÏÓÎÏ×Ù×ÁÌÁÓØ ÎÅÏÂÈÏÄÉÍÏÓÔØ ÎÅ ÐÏÌØÚÏ×ÁÔØÓÑ GS> ÒÁÂÏÔÏÊ Ó ÓÉÛÎÙÍÉ ÂÕÆÅÒÁÍÉ ÂÅÚ ÐÒÏ×ÅÒÏË,

ëÁËÉÅ "ÓÉÛÎÙÅ ÂÕÆÅÒÁ"? ÷ ÑÚÙËÅ ÎÉËÁËÉÈ ÂÕÆÅÒÏ× ÎÅ ÏÐÒÅÄÅÌÑÅÔÓÑ.

GS> Á ÍÎÏÖÅÓÔ×Ï "ÄÙÒ" × ÓÉÓÔÅÍÁÈ ÄÏ ÓÉÈ ÐÏÒ ÏÂÑÚÁÎÙ Ó×ÏÉÍ ÓÕÝÅÓÔ×Ï×ÁÎÅÍ GS> "ÐÅÒÅÐÏÌÎÅÎÉÀ ÂÕÆÅÒÏ×". úÎÁÞÉÔ ÐÒÏÇÒÁÍÍÉÓÔÙ ÄÏ ÓÉÈ ÐÏÒ ÐÒÅÄÐÏÞÉÔÁÀÔ GS> ÄÅÌÁÔØ "ÂÙÓÔÒÏ É ÎÅÐÒÁ×ÉÌØÎÏ"...

þÔÏ ËÁÓÁÅÔÓÑ ÓÔÒÏË, ÜÔÏ ÏÔÄÅÌØÎÙÊ ×ÏÐÒÏÓ. ïÐÑÔØ ÖÅ -- Héëôï Hå úáóôá÷ìñåô. åÓÔØ ÂÏÌÅÅ ×ÍÅÎÑÅÍÙÅ ÒÅÁÌÉÚÁÃÉÉ. é Ë ÑÚÙËÕ ÜÔÏ Héëáëïçï ïôHïûåHéñ Hå éíååô.

KF>> ÷ ÍÏÍÅÎÔ ÐÏÑ×ÌÅÎÉÑ C ×ÁÖÎÁ ÂÙÌÁ ÉÍÅÎÎÏ ÐÅÒÅÎÏÓÉÍÏÓÔØ ÍÅÖÄÕ ÒÁÚÎÙÍÉ KF>> ÁÐÐÁÒÁÔÎÙÍÉ ÐÌÁÔÆÏÒÍÁÍÉ, GS> ÷ÓÅÇÏ ÌÉÛØ _×ÏÚÍÏÖÎÏÓÔØ_ ÐÅÒÅÎÏÓÉÍÏÓÔÉ. ïÔÓÌÅÖÉ×ÁÎÉÅ ÍÁÛÉÎÏ-ÚÁ×ÉÓÉÍÙÈ GS> ÎÀÁÎÓÏ× ÐÒÏÇÒÁÍÍ ×ÏÚÌÁÇÁÌÏÓØ ÎÁ ÐÒÏÇÒÁÍÍÉÓÔÁ :-/

á ÎÁ ËÏÇÏ ÏÎÏ ÄÏÌÖÎÏ ×ÏÚÌÁÇÁÔØÓÑ? ñ Åݣ ÒÁÚ ÓÐÒÁÛÉ×ÁÀ, ËÁË ÔÙ ÐÒÅÄÓÔÁ×ÌÑÅÛØ ÐÒÏÇÒÁÍÍÎÕÀ ÒÅÁÌÉÚÁÃÉÀ 16-ÒÁÚÒÑÄÎÏÇÏ ÞÉÓÌÁ ÎÁ 18-ÒÁÚÒÑÄÎÏÊ ÍÁÛÉÎÅ?

KF>> Á ÔÁËÖÅ ÜÆÆÅËÔÉ×ÎÏÓÔØ ËÏÄÁ. HÉËÔÏ Ï 8-ÒÁÚÒÑÄÎÙÈ ËÏÎÔÒÏÌÌÅÒÁÈ É ÎÅ KF>> ÄÕÍÁÌ, ÉÈ ÔÏÇÄÁ ×ÏÏÂÝÅ ÎÅ ÓÕÝÅÓÔ×Ï×ÁÌÏ. GS> ...É ÐÒÅÄÕÓÍÏÔÒÅÔØ ×ÏÚÍÏÖÎÏÓÔØ ÉÈ ÐÏÑ×ÌÅÎÉÑ ÎÅ ÓÍÏÇÌÉ...

HÅ ÓÍÏÇÌÉ ÐÒÅÄÕÓÍÏÔÒÅÔØ, ÞÔÏ ËÔÏ-ÔÏ ÎÁÞΣÔ ÉÈ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÔØ ÎÁ ÑÚÙËÅ ÐÒÅÄÎÁÚÎÁÞÅÎÎÏÍ ÓÏ×ÓÅÍ ÄÌÑ ÄÒÕÇÏÇÏ.

KF>> ïÔÓÀÄÁ É int ÐÅÒÅÍÅÎÎÏÇÏ ÒÁÚÍÅÒÁ -- ÏÎ ÖÅ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÒÁÚÎÙÊ Õ ×ÓÅÈ KF>> ÍÁÛÉÎ. HÅ ÏÇÒÁÎÉÞÉ×ÁÔØ ÖÅ ÅÇÏ ÖÅÌÅÚÎÏ, × ÓÍÙÓÌÅ ÐÒÏÇÒÁÍÍÎÏ, ÎÁ 16 KF>> ÒÁÚÒÑÄÏ×? ðÒÅÄÓÔÁ×ÌÑÅÛØ ËÁËÏÊ ÜÔÏ "Ï×ÅÒÈÅÄ" ÂÕÄÅÔ? GS> ÷ÏÔ ËÁË ÒÁÚ ÐÏ ÜÔÏÊ ÌÏÇÉËÅ É ÂÙÌ ÓÄÅÌÁÎ ÉÓÈÏÄÎÙÊ ÓÔÁÎÄÁÒÔ. çÄÅ ÎÁ GS> 8-ÍÉ ÂÉÔËÅ int ÐÏÌÕÞÁÌÓÑ 8-ÍÉ ÂÉÔÎÙÍ - ÂÅÚ Ï×ÅÒÈÏÄÁ.

åݣ ÒÁÚ: ëáëïê ïòçáHéúáãéåê é ëïçäá äáHHùê óôáHäáòô ðõâìéëï÷áìóñ, ïH Há÷åòHïå Hïíåò ëáëïê éíååô? ñ óíïçõ ðïêôé ÷ âéâìéïôåëõ é ïúHáëïíéôóñ ó Héí? íÏÖÅÔ ÜÔÏ çïóô ÉÌÉ ISO? HÅÔ? á ÐÕÂÌÉËÁÃÉÑ ÍÏÅÇÏ ÐÉÓØÍÁ × ÜÈÕ ÍÏÖÅÔ ÓÞÉÔÁÔØÓÑ ÓÔÁÎÄÁÒÔÏÍ?

GS> úÁÔÏ Ó ÇÌÀËÁÍÉ, ÉÚ-ÚÁ ËÏÔÏÒÙÈ ÐÒÉÛÌÏÓØ ××ÅÓÔÉ "ÎÏ×ÙÅ" ÏÇÒÁÎÉÞÅÎÉÑ GS> ÎÁ ÒÁÚÍÅÒ...

HÅÓËÏÎÞÁÅÍÙÊ ÐÏÔÏË ÂÒÅÄÁ. ðÅÒ×ÙÊ ÉÍÅÎÎÏ ÓÔÁÎÄÁÒÔ -- ÂÙÌ ÏÐÕÂÌÉËÏ×ÁÎ ANSI ÇÄÅ-ÔÏ × ÓÅÒÅÄÉÎÅ 80-È ÇÏÄÏ×. äÏ ÜÔÏÇÏ ÉÍÅÌÏÓØ ÓÔÉÈÉÊÎÏÅ/ÈÁÏÔÉÞÅÓËÏÅ ÒÁÚ×ÉÔÉÅ ÑÚÙËÁ, ËÁË tcl ÉÌÉ python × ÐÏÓÌÅÄÎÉÅ 10 ÌÅÔ.

KF>> çÒÁÂÌÉ ÈÏÒÏÛÉ, ÓÏÇÌÁÓÅÎ. Hï! çÒÁÍÏÔÎÏ ÎÁÐÉÓÁÎÎÙÅ ÐÒÏÇÒÁÍÍÙ KF>> ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÕÓÐÅÛÎÏ ÐÅÒÅÎÏÓÑÔÓÑ ÎÁ ÍÁÛÉÎÕ Ó ÍÅÎØÛÅÊ ÒÁÚÒÑÄÎÏÓÔØÀ KF>> ÒÅÇÉÓÔÒÏ×. GS> ïÐÑÔØ ÐÏÛÌÉ × ÈÏÄ ÒÅÌÉÇÉÏÚÎÙÅ ÄÏ×ÏÄÙ Ï ÇÒÁÍÏÔÎÙÈ ÐÒÏÇÒÁÍÍÉÓÔÁÈ, GS> ËÏÔÏÒÙÅ _ÎÉËÏÇÄÁ_ ÎÅ ÄÅÌÁÀÔ ÏÛÉÂÏË...

óìõþáêHï _ôáëéå_ ÏÛÉÂËÉ Hå äïðõóëáàôóñ. üÔÏ ÎÅ ÏÛÉÂËÁ. üÔÏ ÐÒÉÚÎÁË ÎÅÇÒÁÍÏÔÎÏÓÔÉ. ÷ÏÔ ÔÙ ÐÒÏ ÓÔÁÎÄÁÒÔÙ É ÒÁÚÍÅÒ int ÎÉÞÅÇÏ ÎÅ ÚÎÁÅÛØ, É ÓÞÉÔÁÅÛØ ÏÛÉÂËÏÊ, ÓÁÍ ÖÅ ÐÏÄÏÂÎÙÅ ÏÛÉÂËÉ ÄÏÐÕÓËÁÑ.

KF>>>> åÓÌÉ ÍÏÉ ÏÖÉÄÁÎÉÑ ÎÅ ÏÐÒÁ×ÄÙ×ÁÀÔÓÑ, ÚÎÁÞÉÔ ÜÔÏ ÎÅ KF>>>> C-ËÏÍÐÉÌÑÔÏÒ, ÏÎ ÓÔÁÎÄÁÒÔÕ, ÄÁÖÅ ANSI-C, ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ. GS>>> óÏÏÔ×ÅÔÓÔ×ÕÅÔ "ËÌÁÓÓÉÞÅÓËÏÍÕ" ÓÔÁÎÄÁÒÔÕ ÏÔ K&R. KF>> ôÏ ÎÅ ÓÔÁÎÄÁÒÔ ×Ï×ÓÅ. GS> óÔÁÎÄÁÒÔ ÄÅ-ÆÁËÔÏ, ÓÕÝÅÓÔ×Ï×ÁÌ ÂÏÌØÛÅ ÄÅÓÑÔËÁ ÌÅÔ.

"óÔÁÎÄÁÒÔ ÄÅ-ÆÁËÔÏ" ÜÔÏ ÎÅ ÓÔÁÎÄÁÒÔ. HÅ ÐÏÊͣÛØ ÄÁÖÅ ÎÁ ÞÔÏ ÓÓÙÌÁÔØÓÑ × ÓÌÕÞÁÅ ÞÅÇÏ. õ K&R ×ÅÓØÍÁ ÔÕÍÁÎÎÏ ÏÐÉÓÁÎÏ ÇÄÅ ÞÅÇÏ É ÓËÏÌØËÏ ÄÏÌÖÎÏ ÂÙÔØ × ËÏÎËÒÅÔÎÏÊ ÒÅÁÌÉÚÁÃÉÉ. ôÅÍ ÂÏÌÅÅ, ÞÔÏ ÑÚÙË ÎÅÐÒÅÒÙ×ÎÏ ÍÅÎÑÌÓÑ.

KF>> é ÕÓÐÅÛÎÏ ×ÙÍÅÒ ÌÅÔ 15 ÎÁÚÁÄ. HÏ ÚÁÍÅÔØ -- ÐÒÏÇÒÁÍÍÙ × ΣÍ KF>> ÎÁÐÉÓÁÎÎÙÅ, ×ÅÓØÍÁ ÎÅÐÌÏÈÏ ÒÁÓÐÏÌÚÌÉÓØ ÐÏ ÒÁÚÎÏÏÂÒÁÚÎÙÍ ÁÒÈÉÔÅËÔÕÒÁÍ. GS> ãÅÎÏÊ ÏÂÒÁÓÔÁÎÉÑ ËÕÞÅÊ ÐÒÏ×ÅÒÏË É "ÒÕÞÎÙÈ" ÐÅÒÅÄÅÌÏË ÐÏÄ ÏÓÏÂÅÎÎÏÓÔÉ GS> ÜÔÉÈ "ÒÁÚÎÏÏÂÒÁÚÎÙÈ ÁÒÈÉÔÅËÔÕÒ". ðÏÔÏÍÕ ÞÔÏ ×ÁÖÎÏ ÂÙÌÏ ÐÏÌÕÞÉÔØ ÒÅÚÕÌØÔÁÔ, GS> ÐÕÓÔØ É ÔÁËÏÊ ÃÅÎÏÊ :-/

ôÙ ÂÒÅÄÉÛØ. õÖÅ ÌÅÔ 15 ËÁË ÎÉËÁËÉÈ ÖÕÔËÉÈ ÐÒÏ×ÅÒÏË ÎÅ ÔÒÅÂÕÅÔÓÑ. ÷ÓÅ ÉÍÅÀÝÉÅÓÑ ËÏÍÐÉÌÑÔÏÒÙ ÓÏÏÔ×ÅÔÓÔ×ÕÀÔ ANSI, É C99 ÍÎÏÇÉÅ ÞÁÓÔÉÞÎÏ ÉÌÉ ÐÒÁËÔÉÞÅÓËÉ ÐÏÌÎÏÓÔØÀ ÓÏÏÔ×ÅÔÓÔ×ÕÀÔ. ÷ ÒÁÍËÁÈ C99, ÎÉËÁËÉÈ ÏÐÉÓÙ×ÁÅÍÙÈ ÔÏÂÏÊ ÕÖÁÓÏ× ÎÅ ÓÕÝÅÓÔ×ÕÅÔ. á ÔÅËÓÔ ÐÒÏÇÒÁÍÍÙ ÒÁÓÓÞÉÔÁÎÎÏÊ ÎÁ ANSI C ËÏÍÐÉÌÑÔÏÒ "ÓÔÁÎÄÁÒÔÁ" K&R ÐÒÏÓÔÏ ÎÅ ÐÅÒÅ×ÁÒÉÔ...

KF>>>> ëÁÖÄÙÊ ÒÁÚ, ËÏÇÄÁ ÐÒÏÐÁÄÁÅÔ ÐÉÔÁÎÉÅ, × ΣÍ ÎÕÖÎÏ ÎÁÖÉÍÁÔØ ÞÔÏ-ÔÏ KF>>>> ×ÒÏÄÅ F-5-4, F-02-6-1... HÁ ÉÎÄÉËÁÔÏÒÅ ÔÏÌØËÏ ÜÔÉ ÖÅ ÃÉÆÒÙ. KF>>>> üÔÏ ÍÏÖÎÏ ÚÁÐÏÍÎÉÔØ??? GS>>> öÌÏÂÉÛØÓÑ ÎÁ ÂÁÔÁÒÅÊËÕ? ðÏËÕÐÁÊ ×ÅÒÓÉÀ áïH'Á Ó NVRAM'ËÏÊ! KF>> HÅ ÐÒÅÄÏÓÍÏÔÒÅÎÏ ÍÅÓÔÏ ţ ÕÓÔÁÎÏ×ËÉ. "ðÕÌØÓÁÒ". GS> á ËÕÄÁ ÔÙ ÓÍÏÔÒÅÌ, ËÏÇÄÁ ÐÏËÕÐÁÌ ÜÔÕ ÇÁÄÏÓÔØ? ;) GS> ôÅÒÍÏËÌÅÅÍ ÍÏÖÎÏ ţ ÐÒÉËÌÅÉÔØ ÇÄÅ-ÎÉÂÕÄØ ×ÎÕÔÒÉ ÎÁ ÓÔÅÎËÕ...

ôÁÍ ÂÁÔÁÒÅÊËÉ È×ÁÔÉÔ ÞÁÓÁ ÎÁ ÔÒÉ...

GS> ïÐÑÔØ ÖÅ, ÏÞÅÎØ ÖÁÌØ, ÞÔÏ "×ÏÓØÍÉÎÏÇÉÅ" ÍÉËÒÕÛËÉ CMOS-ÞÁÓÏ× GS> ÐÏÑ×ÉÌÉÓØ ÔÁË ÐÏÚÄÎÏ É ÉÈ ÎÅ ÐÒÉÍÅÎÑÌÉ × áïH'ÁÈ. ó ÎÉÍÉ GS> ×ӣ ÂÙÌÏ ÂÙ ËÕÄÁ ÐÒÏÝÅ É ÎÁģÖÎÅÅ...

K176éåxx ÂÙÌÉ ÄÏÓÔÕÐÎÙ. óÄÅÌÁÔØ ÂÙÌÏ ÍÏÖÎÏ. HÏ "ÒÙÎÏË É ÔÁË ÈÁ×ÁÅÔ"

-- ÜÔÏ, ÉÍÈÏ, ÅÄÉÎÓÔ×ÅÎÎÁÑ ÐÒÉÞÉÎÁ ÎÅÐÏÍÅÒÎÏÇÏ ÕÒÏÄÓÔ×Á áïHÏ×.

KF>>>> âÅÚÚÎÁËÏ×ÙÊ ÔÉÐ -- Åݣ ÏÄÎÉ ÏÐÁÓÎÙÅ ÇÒÁÂÌÉ. GS>>> ëÁËÉÅ Ë ޣÒÔÕ "ÇÒÁÂÌÉ"? üÔÏÔ ÔÉÐ ÏÐÉÓÙ×ÁÅÔ _ÒÅÁÌØÎÙÅ_ ÄÁÎÎÙÅ KF>> HÁÄ ÒÅÁÌØÎÙÍÉ ÄÁÎÎÙÍÉ ÞÁÓÔÏ ÐÒÏ×ÏÄÑÔÓÑ ÎÅ ÍÅÎÅÅ ÒÅÁÌØÎÙÅ KF>> ×ÙÞÉÓÌÅÎÉÑ, × ËÏÔÏÒÙÈ ×ÐÏÌÎÅ ÍÏÖÅÔ ÐÏÑ×ÉÔØÓÑ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÅÚÕÌØÔÁÔ.

GS> þÁÓÔÏ != ×ÓÅÇÄÁ.

éÚ ÔÏÇÏ, ÞÁÓÔÏ != ×ÓÅÇÄÁ, ÎÉËÁË ÎÅ ÓÌÅÄÕÅÔ, ÞÔÏ ÞÁÓÔÏ == ÎÉËÏÇÄÁ. óÀÒÐÒÉÚ...

KF>> ÷ ÔÏÍ ÞÉÓÌÅ É ÐÒÏÍÅÖÕÔÏÞÎÙÊ. óÐÌÏÛØ É ÒÑÄÏÍ. GS> úÎÁÞÉÔ × ÏÔÄÅÌØÎÙÈ ÓÌÕÞÁÑÈ ÄÌÑ "ÐÒÏÍÅÖÕÔÏÞÎÏÊ" ÏÂÒÁÂÏÔËÉ GS> ÐÒÉģÔÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ "ÂÏÌÅÅ ÛÉÒÏËÉÊ" ÔÉÐ ÐÅÒÅÍÅÎÎÙÈ. GS> ïÐÑÔØ ÖÅ, ÎÅ ÆÁËÔ, ÞÔÏ ÚÎÁËÏ×ÙÊ. ë ÐÒÉÍÅÒÕ, ÎÁËÏÐÌÅÎÉÅ

÷ÏÔ ÎÅÄÁ×ÎÏ ÎÁÐÉÓÁÌ, ÞÔÏ-ÔÏ ×ÒÏÄÅ A-B < C ×ÍÅÓÔÏ A < B+C. íÏÑ ÌÏÇÉËÁ ÇÏ×ÏÒÉÔ, ÞÔÏ ÜÔÏ ÜË×ÉÜ×ÁÌÅÎÔÎÙÅ ×ÙÒÁÖÅÎÉÑ, Á ËÏÍÐÕÔÅÒ ÐÏÞÅÍÕ-ÔÏ ÓÞÉÔÁÅÔ ÉÎÁÞÅ.

GS> ÒÅÚÕÌØÔÁÔÏ× (ÐÏÄÓޣÔ ÉÚÄÅÌÉÊ) ÔÒÅÂÕÅÔ ÔÏÌØËÏ ÂÅÚÚÎÁËÏ×ÏÊ GS> ÁÒÉÆÍÅÔÉËÉ, ÐÏÓËÏÌØËÏ "ÏÔÒÉÃÁÔÅÌØÎÙÈ ÉÚÄÅÌÉÊ" × ÒÅÁÌØÎÏÊ GS> ÖÉÚÎÉ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.

úÁÔÏ ÏÔÒÉÃÁÔÅÌØÎÙÅ ÞÉÓÌÁ ÓÕÝÅÓÔ×ÕÀÔ. ïÔÒÉÃÁÔØ ÉÈ ÓÕÝÅÓÔ×Ï×ÁÎÉÅ, ÜÔÏ ÐÒÉÍÅÒÎÏ ÔÁËÖÅ, ËÁË É ÎÅ ÓÞÉÔÁÔØ 0 ÞÉÓÌÏÍ. åÓÔØ, ÎÁÐÒÉÍÅÒ, × ÐÁÓËÁÌÅ ÔÉÐ nil. é ÞÉÓÌÏ ÉÚÄÅÌÉÊ -- 0 ÂÙÔØ ÎÅ ÍÏÖÅÔ. éÚÄÅÌÉÑ ÌÉÂÏ ÅÓÔØ (not nil), ÌÉÂÏ ÉÈ ÎÅÔ (nil)...

GS>>> (Ë ÐÒÉÍÅÒÕ ÕÒÏ×ÅÎØ ÓÉÇÎÁÌÁ × 8-ÍÉ ÂÉÔÎÏÍ wav ÆÁÊÌÅ ÉÌÉ ÚÎÁÞÅÎÉÅ, GS>>> ÓÞÉÔÁÎÎÏÅ Ó áãð ÏÄÎÏËÒÉÓÔÁÌÌËÉ)! KF>> HÕ ÐÏÓÞÉÔÁÊ ÒÁÚÎÏÓÔØ Ä×ÕÈ ÒÁÚÎÙÈ ÕÒÏ×ÎÅÊ... GS> á ÅÓÌÉ ÚÁÈÏÞÅÔÓÑ ÌÏÇÁÒÉÆÍ ÕÒÏ×ÎÑ ÐÏÓÞÉÔÁÔØ - ÉÚ ÜÔÏÇÏ GS> ÂÕÄÅÔ ÓÌÅÄÏ×ÁÔØ, ÞÔÏ _×ÓÅ ÄÁÎÎÙÅ ÓÌÅÄÕÅÔ ÈÒÁÎÉÔØ × GS> ÆÏÒÍÁÔÅ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ_? óÏÇÌÁÓÎÏ Ô×ÏÅÊ ÌÏÇÉËÅ ;)

ðÒÉģÔÓÑ ÐÒÉ×ÅÓÔÉ Ë ÄÒÕÇÏÍÕ ÔÉÐÕ. ôÏÌØËÏ × ÄÁÎÎÏÍ ÓÌÕÞÁÅ ÎÅÑ×ÎÙÈ ÇÒÁÂÌÅÊ ÎÅÔ, ËÁË × ÓÌÕÞÁÅ Ó ÁÒÉÆÍÅÔÉËÏÊ.

GS>>> char ×ÍÅÓÔÏ int ÎÁ ÂÏÌØÛÉÈ ÐÒÏÃÅÓÓÏÒÁÈ ÍÏÖÅÔ ÏÓ×ÏÂÏÄÉÔØ ËÕÞÕ GS>>> "ÌÉÛÎÉÈ" ÒÅÇÉÓÔÒÏ×, ËÏÔÏÒÙÈ ÏÞÅÎØ ÞÁÓÔÏ ÎÅ È×ÁÔÁÅÔ... KF>> ðÏÊÍÉ, ÞÔÏ ÄÌÑ ÔÏÇÏ ÖÅ ÐÅÎØÔÉÕÍÁ, ×ÅÓØ ÓÔÅË -- ÅÇÏ ÒÅÇÉÓÔÒÙ. GS> ó ËÁËÏÊ ÜÔÏ ÒÁÄÏÓÔÉ?

éÚ ËÅÛÁ.

KF>> é ÐÒÅÆÉËÓÎÙÅ ËÏÍÁÎÄÙ ÏÂÏÊÄÕÔÓÑ ÄÏÒÏÖÅ, ÞÅÍ ËÏÓ×ÅÎÎÏÅ ÏÂÒÁÝÅÎÉÅ KF>> ÞÅÒÅÚ epb. GS> üÔÏ ÎÅ ÉÚ ÔÏÊ ÏÐÅÒÙ. "âÁÊÔÏ×ÙÅ" ËÏÍÁÎÄÙ ÎÅ ÔÒÅÂÕÀÔ ÐÒÅÆÉËÓÏ×.

á ËÏÔÏÒÙÅ ÓÔÁÒÛÕÀ ÐÏÌÏ×ÉÎÕ ÁÄÒÅÓÕÀÔ? ÷ ÌÀÂÏÍ ÓÌÕÞÁÅ áìõ ÔÁÍ 32-ÒÁÚÒÑÄÎÏÅ, ×ÙÞÌÅÎÑÔØ ÂÁÊÔ ÉÚ ÒÅÇÉÓÔÒÁ ÔÏÖÅ ÞÅÇÏ-ÔÏ ÓÔÏÉÔ.

KF>> ëÕÄÁ ×ÁÖÎÅÊ ÒÁÓËÉÄÁÔØ ÄÁÎÎÙÅ ÐÏ ÒÅÇÉÓÔÒÁÍ ÔÁË, ÞÔÏÂÙ ËÏÍÁÎÄÙ ÐÏÐÁÌÉ × KF>> ÒÁÚÎÙÅ, ÎÅ ÚÎÁÀ ËÁË ÜÔÏ ÐÏ-ÒÕÓÓËÉ, U É V-pipe ËÏÎ×ÅÊÅÒÁ. GS> üÔÏ ÄÌÑ ÏÐÔÉÍÉÚÁÃÉÉ ÐÏ ÂÙÓÔÒÏÄÅÊÓÔ×ÉÀ. ÷ÅÓØÍÁ ÓÐÅÃÉÆÉÞÅÓËÉÅ GS> ÄÌÑ ËÏÎËÒÅÔÎÙÈ ÔÉÐÏ× ÐÒÏÃÅÓÓÏÒÏ×. ôÙ × ËÕÒÓÅ ÉÚÍÅÎÅÎÉÊ ÐÏ GS> "ÐÒÁ×ÉÌÁÍ ÏÐÔÉÍÉÚÁÃÉÉ" ËÏÄÁ ÐÏ ×ÓÅÍÕ ÓÅÍÅÊÓÔ×Õ x86?

ëÏÍÐÉÌÑÔÏÒ × ËÕÒÓÅ.

KF>>>> é È×ÁÔÁÌÏ ÜÔÏÇÏ NVRAM'Á ÒÏ×ÎÏ ÎÁ 3 ÇÏÄÁ... GS>>> õ ÚÎÁÞÉÔÅÌØÎÏ ÂÏÌÅÅ ÄÏÒÏÇÉÈ ÆÉÒÍÅÎÎÙÈ ÓÏ×ÒÅÍÅÎÎÙÈ ×ÉÎÞÅÓÔÅÒÏ× KF>> ôÏ-ÅÓÔØ ÔÙ ÓÞÉÔÁÅÛØ, ÜÔÏ ÎÏÒÍÁÌØÎÏ, ÞÔÏ ÉÚÄÅÌÉÅ ÎÅ ÄÏÖÉ×ÁÅÔ ÄÁÖÅ KF>> ÄÏ ÇÁÒÁÔÉÊÎÏÇÏ ÓÒÏËÁ? GS> ðÒÉ ޣÍ ÔÕÔ Ñ? üÔÏ Åݣ ë.íÁÒËÓ ÐÉÓÁÌ, ÞÔÏ × ÂÉÚÎÅÓÅ ÇÌÁ×ÎÏÅ - ÕÓËÏÒÉÔØ GS> ÏÂÏÒÏÔ ËÁÐÉÔÁÌÁ. é ÍÎÏÇÉÅ ÎÙÎÅÛÎÉÅ ÂÉÚÎÅÓÍÅÎÙ ÕÐÏÒÎÏ ÐÒÏ×ÏÄÑÔ ÜÔÏ ÔÅÚÉÓ GS> × ÖÉÚÎØ. äÌÑ ÍÎÏÇÉÈ ÉÚÄÅÌÉÊ ÕÖÅ ÇÏÒÁÚÄÏ ×ÁÖÎÅÅ ÎÅ ÐÏÔÒÅÂÉÔÅÌØÓËÉÅ GS> ËÁÞÅÓÔ×Á, GS> Á ÜÆÆÅËÔÉ×ÎÏÓÔØ ÕÔÉÌÉÚÁÃÉÉ...

ðÒÅÄÌÁÇÁÀ ÕÔÉÌÉÚÉÒÏ×ÁÔØ ÓÒÁÚÕ ÓÏ ÓÂÏÒÏÞÎÏÇÏ ËÏÎ×ÅÊÅÒÁ...

KF>> úÎÁÞÉÔÅÌØÎÏ ÂÏÌÅÅ ÄÏÒÏÇÉÅ ×ÉÎÞÅÓÔÅÒÙ, ÍÅÖÄÕ ÐÒÏÞÉÍ, ÄÏÖÉ×ÁÀÔ É KF>> ÏÔÄÅÌØÎÙÅ ÜËÚÅÍÐÌÑÒÙ ÖÉ×ÕÔ ÏÞÅÎØ ÄÏÌÇÏ. GS> ïÔÄÅÌØÎÙÅ ÜËÚÅÍÐÌÑÒÙ - ÐÌÏÈÏÊ ÁÒÇÕÍÅÎÔ. ÷ÁÖÎÁ ÔÅÎÄÅÎÃÉÑ...

ôÅÎÄÅÎÃÉÑ ÔÁËÏ×Á, ÞÔÏ ÏÓÎÏ×ÎÁÑ ÍÁÓÓÁ ÇÁÒÁÎÔÉÊÎÙÊ ÓÒÏË ×ӣ ÖÅ ÐÅÒÅÖÉ×ÁÀÔ.

GS>>> ÷ÉÄÉÍÏ ÔÁË-ÖÅ, ËÁË ÐÏÄÄÅÒÖÉ×ÁÔØ 16-ÒÁÚÒÑÄÎÙÊ int ÎÁ 24-ÒÁÚÒÑÄÎÏÍ GS>>> ÐÒÏÃÅÓÓÏÒÅ (ÔÁËÉÅ ÄÅ×ÁÊÓÙ ÂÙÌÉ). KF>> þÅÍ 16-ÒÁÚÒÑÄÎÙÊ int ÌÕÞÛÅ 24-ÒÁÚÒÑÄÎÏÇÏ, ËÒÏÍÅ ÔÏÇÏ, ÞÔÏ ×ÙÚÏ×ÅÔ KF>> ÄÉËÉÊ "Ï×ÅÒÈÅÄ" ÎÁ ÅÇÏ ÐÏÄÄÅÒÖÁÎÉÅ? GS> ëÔÏ ÓËÁÚÁÌ "ÌÕÞÛÅ"? GS> ðÒÏÓÔÏ ÎÅËÏÔÏÒÙÅ "ÔÒÀËÉ" ÐÅÒÅÓÔÁÎÕÔ ÒÁÂÏÔÁÔØ.

HÅÚÁÞÅÍ ÂÙÌÏ ÔÒÀËÉ ÐÒÉÍÅÎÑÔØ. íÉÎÉÍÕÍ -- 16 ÒÁÚÒÑÄÏ×.

KF>> HÅ ÐÒÅÄÏÓÍÏÔÒÅÎÏ ÍÅÓÔÏ ţ ÕÓÔÁÎÏ×ËÉ. "ðÕÌØÓÁÒ". äÁ É ËÕÄÁ ÜÔÏ KF>> ÇÏÄÉÔÓÑ, ÇÄÅ ÔÙ ×ÉÄÅÌ ÓÔÁÃÉÏÎÁÒÎÙÊ ÔÅÌÅÆÏÎ ÎÁ ÂÁÔÁÒÅÊËÁÈ? AT> üÜÜÜ, ÐÏÞÔÉ ×ÓÅ ðÁÎÁÓÏÎÉËÉ - Ó ÂÁÔÁÒÅÊËÁÍÉ, ÎÁÐÒÉÍÅÒ ÓÁÍÙÊ ÐÏÐÕÌÑÒÎÙÊ - AT> 2365. AT> (ÐÒÁ×ÄÁ ÎÕÖÎÙ ÏÎÉ ÔÁÍ ÔÏÌØËÏ ÄÌÑ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÇÒÏÍËÏÊ Ó×ÑÚÉ, Á ÐÏÔÏÍ É AT> ÄÌÑ AT> ÎÅÅ ÎÅ ÓÉÌØÎÏ ÎÕÖÎÙ)

ôÁÍ ÂÁÔÁÒÅÅË ÏÞÅÎØ ÎÁÄÏÌÇÏ È×ÁÔÁÅÔ. á ðÕÌØÓÁÒÕ -- ÎÁ ÔÒÉ ÞÁÓÁ...

Hello Kirill.

14 Feb 04 07:24, you wrote to George Shepelev:

GS>> íÎÅ ÍÏÖÅÔ ÐÒÉÊÔÉ × ÇÏÌÏ×Õ ÉÓÐÏÌØÚÏ×ÁÔØ ÇÏÔÏ×ÙÅ ÐÒÏÇÒÁÍÍÙ É GS>> ÂÉÂÌÉÏÔÅËÉ. ÷ ËÏÔÏÒÙÈ ÉÓÐÏÌØÚÏ×ÁÎ int.

KF> é ÞÔÏ? ôÙ ÍÏÖÅÛØ ÐÒÉ×ÅÓÔÉ ÈÏÔØ ÏÄÉÎ óõýåóô÷õàýéê Há óåçïäHñûHéê KF> íïíåHô ëïíðéìñôïò ó 8-òáúòñäHùí INT?

õ avr-gcc ÅÓÔØ ÏÐÃÉÑ -mint8, ËÏÔÏÒÁÑ ÄÅÌÁÅÔ int - ×ÏÓØÍÉÂÉÔÎÙÍ. ôÏÌØËÏ ×ÒÑÄÌÉ ÜÔÏ ËÔÏ-ÔÏ ÉÓÐÏÌØÚÕÅÔ. HÉËÁËÉÈ ÏÓÏÂÙÈ ÐÒÅÉÍÕÝÅÓÔ× ÜÔÏ ÎÅ ÄÁÅÔ, Á ÐÉÓÁÔØ ÅÝÅ ÓÌÏÖÎÅÅ.

Alexey

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

Пятница Февраль 13 2004 08:11, Roman Gorbunov wrote to George Shepelev:

Учитывая, что я работал в харьковском ЦАБРе (бюро повреждений), и всякого насмотрелся - действительно можешь не продолжать ;-)

А с флеймом советую перебраться в более другую эху...

Георгий

P.S. Сорри за оффтопик, с этой темой заканчиваю :-/

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

Пятница Февраль 13 2004 10:48, Sergei Tuchinski wrote to George Shepelev:

ST>>>>> фигня это. и говорит о том, что ты вообще не представляешь ST>>>>> себе предмет разговора. GS>>>> Представляю. ST>>> тогда не надо привязывать строгость типизации к размерам ST>>> встроенных типов данных GS>> Они в языке "ассемблер" связаны самым неразрывным образом. ST> мы про ассемблер заговорили вдруг?

Почему "вдруг"? Вопрос о нём и был.

ST> строгая типизпция подразумевает контроль согласования используемых ST> типов данных и операций на этапе компиляции.

Да.

ST> при этом может допускаться неявное преобразование типа, если оно ST> непротиворечиво.

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

ST> а "отличать слово от байта" - это понимание на уровне детской ST> песочницы.

Изучай объекты, с которыми оперирует язык ассемблер ;-)

ST> но опять же, опускаясь до твоего уровня.

С подобными "наездами" перебирайся к подобным тебе флеймерам, в какую-нибудь более соответствующую эху...

GS>>>> Да, я в курсе, что там не всё проверяется. К сожалению. ST>>> все проверить невозможно. и, более того, не нужно. GS>> Весьма желательно. Ибо полезно. Если нужно, вводить опции, GS>> отключающие какие-то проверки (для любителей приключений). ST> Джером К. Джером очень удачно сформулировал принцип, иначе ST> именуемый, например, "бритвой оккама" - "В лодку с собой следует брать ST> не все то, что МОЖЕТ ПРИГОДИТЬСЯ, а то, без чего HЕЛЬЗЯ ОБОЙТИСЬ". ST> Контроль диапазона (который ты называешь "контролем типов") может и ST> должен реализовываться на уровне библиотеки.

Hевнимательно читаешь. Я уже объяснял, почему подобные проверки должны реализовываться самим компиляторам, а не оставляться на откуп реализаторам библиотек. Полезность именно такого подхода должен бы сам понять, раз уж ссылаешься на c++ ;-)

ST>>>>> без проблем скомпилируется в ВР. а при выполнении выдаст ST>>>>> ошибку "range check" только при условии компиляции с проверкой ST>>>>> диапазона, GS>>>> Возможность такой проверки на этапе выполнения - очень большое GS>>>> удобство. ST>>> не спорю, но кто сказал, что такое средство должно быть ST>>> атрибутом языка, а не библиотеки? GS>> Подобные средства удобно вносить именно в компилятор, чтобы не GS>> вынуждать делать соответствующий код разработчиков библиотек. GS>> Контрольный пример - ST> может быть, тогда стоит и все библиотеки заодно в компилятор ST> воткнуть?

В отличие от - это невозможно.

ST> и все программы пользовательские туда же заодно - чтобы "не ST> вынуждать"

Флеймишь из чисто спортивного интереса? А смысл?..

GS>> подумай, как будет выглядеть отладка программного комплекса в GS>> каждом из возможных вариантов... ST> а теперь ты подумай, как у тебя должен будет выглядеть компилятор В ST> КАЖДОМ ИЗ ВОЗМОЖHЫХ ВАРИАHТОВ....

Как и обычно. Используются нужные опции, компиляция осуществляется однозначно. В отличие от.

ST> Все, я обсуждение закрыл.

Ввиду отсутствия внятной аргументации ;)

ST> С тобой спорить неинтересно, ты слишком слабо разбираешься в вопросе.

Во всяком случае гораздо лучше тебя ;-)))

Георгий

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

Пятница Февраль 13 2004 15:32, Alexey Boyko wrote to George Shepelev:

GS>> Гораздо приятнее крутить все настройки в начале программы GS>> (или в отдельном "настроечном" файле), чем выискивать нужные GS>> места по тексту программы. AB> Так я тоже практикую.

Старайся практиковать _именно_ так. Здорово облегчает сопровождение!

Георгий

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

Пятница Февраль 13 2004 15:39, Alexey Boyko wrote to George Shepelev:

GS>> Втрое больше команд, только чтобы получить любимый сишниками GS>> знаковый int. Понял. AB> Теперь понял, почему в Си int - машиннозависимый?

В смысле "понял"? Знал! ;)

Проц довольно специфический, "любит" беззнаковые данные...

AB>>> Вообще-то работа с байтами нужна в основном для обработки строк. AB>>> А в строках байты - беззнаковые. GS>> Достаточно типичная задача - работа с байтовыми массивами GS>> данных. Получается вчетверо компактнее, чем в 32-битном варианте. GS>> А знаковые это данные или беззнаковые - отдельный вопрос... AB> Инерция восьмибитного мышления? ;)

Hет.

AB> Я позаменял в программе char на int (там где можно) и все стало AB> пучком.

Тебе что, _никогда_ не приходилось хранить большие массивы "битовых" данных?

AB>>> Конкретно у At91m40800 - не густо. AB>>> Flash - нет. GS>> Упс! Защиты прошивки нет - интерес резко падает... :-( AB> Кому как.

Ясное дело.

AB> Hо AT91 - не единственный представитель АРМ.

"Hо это уже другая сказка" (c)

GS>>>> Работе с "плавающей точкой"? AB>>> Из соображений потребления, АРМ не содержит команд работы с AB>>> плавающей точкой, но имеет механизм добавления их туда. GS>> Что за механизм? В двух словах... AB> У ядра есть интерфейс к сопроцессору и специальные команды обращения к AB> сопроцессору. Изготовитель чипа может подцепить к ядру какой-нибудь AB> свой сопроцессор.

Понятно.

AB> Кстати, у него есть команда Multiply Accumulate - Умножение с AB> накоплением. Типично ДСП-шная команда.

В один такт работает? А разрядность результата какая?

AB> Постарайся все таки скачать даташит,

А смысл? Куда мне этот чип применять, если в нём с защитой прошивки "прокол" получается? :-(

Георгий

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

Суббота Февраль 14 2004 01:38, Maxim Polyanskiy wrote to George Shepelev:

MP>>> Hапример абсолютно разные мнемоники в 16-32 битном режимах. Все MP>>> время надо помнить какой режим включен в данный момент и MP>>> перестраивать всю логику. GS>> А действительно так надо непрерывно переключаться? ;) MP> Да. 16-ти битный режим дает очень серьъезную экономию в коде, 32 в MP> скорости строковых и блочных операций.

Понятно, забавный контроллер. Тогда я бы делал строковые и блочные операции в виде макросов, подставляемых в код 16-битного режима.

MP> Есть компиллеры которые умеют сами переключатся анализируя функции.

Логично...

GS>> Подозреваю, что у си тут никаких проблем. Прога пишется на GS>> int-ах, процессор работает (почти наверняка) в 32-х битном GS>> режиме. MP> Оверхед 32/16 = 80%

Значит 16-ти битный режим кода в качестве основного...

GS>> Значит пиши для него на сях. Это я тебе говорю ;) MP> "Hедождетесь" ;)

;)

Георгий

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

Суббота Февраль 14 2004 07:24, Kirill Frolov wrote to George Shepelev:

KF>>> К чему он должен добавить однозначности? Ты сам себе уже KF>>> противоришь, он таки страдает переменчивостью, или наоборот? KF>>> int как был переменного размера, так и остался. GS>> Был равен разрядности АЛУ процессора, под который велась GS>> компиляция (т.е. мог быть 8-ми битным). KF> Был где?

Был в документации авторов языка программирования C.

KF> Hазови конкретный документ, где декларируется int произволзного KF> размера?

Исходное описание языка C от K&R.

KF> А насчёт "был" -- PDP-11 16-разрядная машина...

И что с того? В том-то и дело, что авторы предвидели возможность существования "железа" с другой разрядностью...

KF>>>>>>> что в нём нет "быстрогй переменной" GS>>>>>> Когда уже поймут, что глупо считать "быстро и неправильно"?.. KF>>>>> Hикто же не заставляет? GS>>>> Провоцируют. KF>>> Кто конкретно? GS>> Любители демонстрировать "эффективные" примеры программирования. KF> Конкретно, огласите поимённый список.

Список составь сам, хотя-бы из авторов программ, которые "ломались" за счёт переполнения сишных буферов ;)

GS>> Сколько раз, к примеру, обосновывалась необходимость не GS>> пользоваться работой с сишными буферами без проверок, KF> Какие "сишные буфера"?

Обыкновенные. Используемые практически любой коммуникационной программой.

KF> В языке никаких буферов не определяется.

А вот для реальной работы они нужны. Ага...

KF>>> В момент появления C важна была именно переносимость между KF>>> разными аппаратными платформами, GS>> Всего лишь _возможность_ переносимости. Отслеживание GS>> машино-зависимых нюансов программ возлагалось на программиста :-/ KF> А на кого оно должно возлагаться?

В максимальной степени - на компилятор.

KF> Я ещё раз спрашиваю, как ты представляешь программную реализацию KF> 16-разрядного числа на 18-разрядной машине?

Элементарно. Эмуляция "не-родной" разрядности, конечно, потребует дополнительных ресурсов (объём кода и время), зато не будет невменяемых глюков при работе...

KF>>> а также эффективность кода. Hикто о 8-разрядных контроллерах и KF>>> не думал, их тогда вообще не существовало. GS>> ...и предусмотреть возможность их появления не смогли... KF> Hе смогли предусмотреть, что кто-то начнёт их программировать на KF> языке предназначенном совсем для другого.

Так ведь программируют. Куча эхотажных процев - 8-ми битки...

KF>>> Отсюда и int переменного размера -- он же действительно разный у KF>>> всех машин. Hе ограничивать же его железно, в смысле программно, KF>>> на 16 разрядов? Представляешь какой это "оверхед" будет? GS>> Вот как раз по этой логике и был сделан исходный стандарт. Где GS>> на 8-ми битке int получался 8-ми битным - без оверхода. KF> Ещё раз: КАКОЙ ОРГАHИЗАЦИЕЙ И КОГДА ДАHHЫЙ СТАHДАРТ ПУБЛИКОВАЛСЯ,

АВТОРАМИ ЯЗЫКА. Больше повторять не буду. В толковом словаре можешь поглядеть смысл понятия "стандарт де-факто".

GS>> Зато с глюками, из-за которых пришлось ввести "новые" ограничения GS>> на размер... KF> Hескончаемый поток бреда.

Hескончаемый поток флейма ;)

KF>>> Грабли хороши, согласен. HО! Грамотно написанные программы KF>>> действительно успешно переносятся на машину с меньшей KF>>> разрядностью регистров. GS>> Опять пошли в ход религиозные доводы о грамотных программистах, GS>> которые _никогда_ не делают ошибок... KF> СЛУЧАЙHО _ТАКИЕ_ ошибки HЕ ДОПУСКАЮТСЯ.

Ещё и как допускаются!

KF> Это не ошибка. Это признак неграмотности.

Hу, понятно, ты-ж у нас грамотный, поэтому никогда, нет HИКОГДА такой вот ошибки не допустишь ;)

"Hе ошибается только тот, кто ничего не делает" (c)

Георгий

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

Суббота Февраль 14 2004 07:53, Kirill Frolov wrote to George Shepelev:

KF>>> Да и мало ли что в учебниках написано, на заборе тоже KF>>> написано... GS>> Это ты загнул! Учебники - это не забор... KF> Это хуже. Шедевры бывают.

Такие "шедевры" - в печку. Без эмоций.

KF>>>>> В паскале операция присваивания -- оператор, ключевое слово KF>>> Читаемость кода, о чём ты говорил в предыдущем письме, очень KF>>> сильно ухудшается. GS>> Разве? ;) KF> Совершенно точно. Образуется масса лишних переменных, масса KF> ненужных операторов -- это зло страшное, в каждой лишней переменной, KF> в каждом операторе гнездится ошибка.

Это уже паранойя! ;) Переменные не лишние, у них смысл есть. А вот сплошной поток трюков, с целью "исключить лишние переменные" - очень часто порождает ошибки - при дальнейшем сопровождении (модификации) подобной "шибко эффективной и абсолютно безошибочной" программы...

KF>>>>> И встречаться в произвольном выражении, как в C, не может. GS>>>> Правильно, чтобы не поощрять хакерский стиль с кучей побочных GS>>>> эффектов в одной строчке. KF>>> Он ни разу не хакерский. GS>> Вовсю хакерский. KF> Определи термин "хакерский".

В данном случае - нетривиальный, могущий приводить к неоднозначному толкованию.

KF>>> Там же нет никаких выражений с неоднозначным порядком KF>>> вычислений. GS>> Дело не только в неоднозначности порядка вычислений, дело в GS>> побочных эффектах... KF> Какие там побочные эффекты? _ОПЕРАТОР_ "запятая" -- это "sequence KF> point", на которой все эффекты завершаются. Только-что вроде KF> обсуждали.

Раз обсуждали - значит не столь это оказывается тривиально, ведь правда? ;)

KF>>>>> Опять же получается, отсутствие фичи -- недостаток. GS>>>> Грамотный стиль всегда предполагает определённые ограничения. KF>>> Угу, но не доводить же их до абсурда? GS>> Их и не доводят... KF> В C не доводят,

Там перекос в другую сторону.

KF> где есть разумных баланс.

Это ты уже про "плюсы"? ;)

KF> Паскаль -- учебный язык, с перекосом в эту сторону. Практическое его KF> использование благодаря чему, несколько затруднительно.

"Плохому танцору" (c)

KF> Будешь спорить, скажи: почему на C в области эхотага вовсю пишут, а KF> паскаль как-то не в почёте оказался?

Hедостаёт компиляторов под все существующие чипы, проигрыш по эффективности кода.

KF>>>>> теряется окончательно, компилятор C и KF>>>>> программист-на-ассемблере выдают одинаково *непомерно раздутый KF>>>>> код*, GS>>>> Hеправда. KF>>> Что неправда? Тут MP ссылку на исходник АОHа давал. Я вижу, KF>>> там код раздут непомерно. GS>> "Hепомерно" - это процентов 10? ;) KF> В разы! Если "в лоб" закодировать весь алгоритм на ассемблере так KF> и получится.

Кодировали уже. Hе получается "в разы". 10-20% получается...

KF>>> Один и тот же алгоритм, реализованный на ассемблере руками, KF>>> без должной (и весьма сложной) оптимизации, и на forth, в шитом KF>>> коде, займёт меньше памяти на forth. GS>> Да. Проблема только в том, что Forth в такой реализации не GS>> обеспечит требуемого быстродействия системы (на исходных GS>> процессорах Z80/i51)... KF> В будильнике нужно жуткое быстродействие? Если на секунду KF> опаздает -- это критично?

Критично. При установке времени того-же будильника за секунду у меня несколько циферок в поле "часы" успевают смениться...

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

Таблицы не учитываем.

GS>>>> программ, что им нужно было всего-лишь подождать десяток лет, KF>>> Hо ведь i8051 был? GS>> Z80 стал доступен раньше. KF> Масса микросхем мелкой логики были доступны ещё раньше. KF> Теоретически, весь АОH, можно построить исключительно на 555ЛА3 и KF> нескольких транзисторах...

Да хоть на КТ315-х. Вот только практически - не получается.

GS>>>> время без сетевого питания - от батареек. Так что избыток KF>>> Это вообще никак не связано. Там индикатор потребляет больше, KF>>> чем нужно для часов. GS>> Ты сильно отстал от жизни. Уже довольно давно существуют АОH'ы GS>> с ЖК индикатором и питанием от телефонной линии. Та-же "Палиха", GS>> к примеру... KF> Когда-то давно видел, очень дорогой. Сейчас вообще никаких АОHов в KF> ближайшем магазине не видно. Обычные импортные аппараты и KF> радиотелефоны.

Именно. "Кто не успел - тот опоздал"

Георгий

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

Суббота Февраль 14 2004 08:07, Kirill Frolov wrote to George Shepelev:

KF>>>>> Беззнаковый тип -- ещё одни опасные грабли. GS>>>> Какие к чёрту "грабли"? Этот тип описывает _реальные_ данные KF>>> Hад реальными данными часто проводятся не менее реальные KF>>> вычисления, в которых вполне может появиться отрицательный KF>>> результат. GS>> Часто != всегда. KF> Из того, часто != всегда, никак не следует, что часто == никогда. KF> Сюрприз...

Для тебя сюрприз? ;-)

KF>>> В том числе и промежуточный. Сплошь и рядом. GS>> Значит в отдельных случаях для "промежуточной" обработки GS>> придётся использовать "более широкий" тип переменных. GS>> Опять же, не факт, что знаковый. К примеру, накопление KF> Вот недавно написал, что-то вроде A-B < C вместо A < B+C. KF> Моя логика говорит, что это эквиэвалентные выражения, а компутер KF> почему-то считает иначе.

Правильно считает. Он ведь с ограниченным диапазоном возможных значений работает, а не с математическими абстрактными шкалами плюс-минус бесконечность...

К примеру, если в твоей записи A, B и C беззнаковые, то B+C тоже беззнаковая величина, а вот для A-B может потребоваться знаковая величина (и проверка изменится соответственно).

GS>> результатов (подсчёт изделий) требует только беззнаковой GS>> арифметики, посколько "отрицательных изделий" в реальной GS>> жизни не существует. KF> Зато отрицательные числа существуют.

Числа - да. Реальные объекты - не факт.

KF> Отрицать их существование, это примерно также,

Мультик такой был, где в ответе получалось "полтора землекопа" ;)))

KF> как и не считать 0 числом.

0 - не натуральное число. Тоже сюрприз для тебя? ;)

GS>>>> (к примеру уровень сигнала в 8-ми битном wav файле или GS>>>> значение, считанное с АЦП однокристаллки)! KF>>> Hу посчитай разность двух разных уровней... GS>> А если захочется логарифм уровня посчитать - из этого GS>> будет следовать, что _все данные следует хранить в GS>> формате с плавающей точкой_? Согласно твоей логике ;) KF> Придётся привести к другому типу.

Ото-ж.

KF> Только в данном случае неявных граблей нет,

Есть. Могут возникнуть специфические ошибки округления.

KF> как в случае с арифметикой.

;-)

Георгий

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required