4-Feb-04 03:24 George Shepelev wrote to Oleksandr Redchuk:
GS> Воскресенье Февраль 01 2004 22:12, Oleksandr Redchuk wrote to George GS> Shepelev:
OR>> В стандарте С многие его давние недостатки уже довольно давно OR>> поправлены.
GS> Вот только старые компиляторы об этом не знают, А где их взять-то? AVOCET C51 95 года вполне всё знает.
GS> как и книжки, написанные до этих "революций" (по которым училась GS> программировать масса народу). Вопросы однако - ты когда на 386-м в 32-битном режиме программировать начал - ты тоже пользовался только книгами, написанными "до революций".
GS> Когда берётся исходник, в котором утверждается, что GS> он написан на си, подразумевается соответствие первоначальному стандарту, А почему при разговоре о паскале ты вдруг TP вспомнил - ведь в нём сполшные улучшения по сравнению с "первоначальным стандартом"?
GS> а не неизвестно каким дальшейшим "улучшениям и дополнениям"... Как только у меня появилсяь возможность пользоваться нормальными прототипами функций вместо int foo(a,b) int a; float b; { } я начал этим пользоваться. Не вижу никакого смысла сидеть на старом компиляторе за исключением необходимости поддержки тех ОС, на которых новго нет. Кросс-компилятторов это не касается.
OR>> Так что или признай, что ты трепло, GS> Признаю, что ты хамишь. По концентрации - ничуть не больше, чем ты трепешься. По суммарному объёму -- гораздо меньше.
OR>> ни разу не видевшее стандарта на C,
GS> Я изучал си (уже довольно давно) по стандарту от _авторов_ этого языка.
От авторов стандарта не было. Была только "сложившаяся практика". В стандарте ANSI C очень многое уже было не так.
OR>> программист в тех случаях, когда ему надо не меньше, чем 32 бита (или OR>> ещё какие ограничения), то он заводит нужный тип.
GS> Преодолевая недостатки исходной концепции языка. В чём? В исходной концепции есть typedef для заведения своих типов. Я этим пользуюсь. "Что я делаю не так"?
OR>> И что это возможно не только в Аде, но и в С. И если раньше в C с OR>> этим делом было "кто в лес, кто по дрова" с опорной точкой в виде OR>> limits.h, то сейчас вещи типа int16_t, int_least16_t и int_fast16_t OR>> должны сидеть в stdint.h. И только облом мне мешает
GS> Так кто из нас "нормальный"? У меня всё строго определяется, GS> ты по-прежнему надеешься "на авось". Где ты видишь "авось"?
GS> Угу, ведь ассемблер никогда и _не претендовал_ на машинонезависимость GS> в этом вопросе. В отличие от ЯВУ ему простительно "настраиваться" GS> на конкретную архитектуру. Почитай письмо Овсиенко о его опыте переноса прошивки со 186-го процессора (больше 100K прошивка) на мегу128. С-шная часть (всё, кроме низкоуровневого IO) заработала за 1 день.
KF>>>> short так и остался 16-разрядным, а long как минимум _______^^^^^
KF>>>> 32-разрядным... GS>>> Ещё раз. Я говорю обо _всех_ ассемблерах для этих процессоров. GS>>> Вовсе не факт, что твои ожидания оправдаются для _всех_ сишных GS>>> компиляторов. В этом существенная разница... [...]
OR>> Все сишные компиляторы для x86 short держат 16-битным. GS> Речь шла об int, а не о short. Программа, скомпилённая для 8086 идёт
1) см. выше.
2) про int изначально никто не обещал одинаковости размера
3) дельфийский cardinal, который в ранних дельфях был 32 бита, но в диапазоне 0..2147483647 - отдельный радостный эпизод в моей жизни.
GS> без проблем под P4, в том числе при перекомпиляции "32-х битными" GS> ассемблерами. А сишники тут имеют шанс получить неприятности. Одни и те же (_физически_) исходники avreal компилируются bcc для DOS/16бит, bcc32 для win32 и gcc для линукса. "Что я делаю не так"?
GS> Ото-ж! Моё же мнение, это должно быть оставлено не на уровне предпочтений GS> отдельных программистов, а на уровне базовых _явных_ свойств типов GS> переменных языка программирования. Явные свойства сишных типов конкретной реализации прописаны в limits.h Если они важны -- этим можно воспользоваться. Если нет - полагаться на ограничения (слабые) прописанные в стандарте.
GS> Вот именно! Они и будут "не представлять", поскольку в языке оставлена GS> такая "дыра". Никакой самый лучший компилятор не даст человеку не сделать глупость.
OR>> Впрочем, свои громко названные "макросы" для pic16 ты тут уже показал. OR>> Зря.
GS> Позволь мне самому решать, какие мнемоники мне удобно использовать GS> в своей работе! Да сколько угодно!!! Но ты несколько лет приводил их в пример как вершину макросизма. А оказалась тривиальщина. Надо было параллаксовский ассемблер брать и не мучиться, там это всё и даже больше на уровне компилятора сделано, причём, насколько я помню, там попытка скипнуть jz была бы ошибкой, в отличие от твоих макросов.
OR>> и новые мнемоники для очевидных пар команд
GS> Hеужели тебе _очевидно_ назначение, скажем, команды MOVF f,1 Помнится мне, что года так с 94-95-го в mpasm-е уже точно можно было писать movf F,w и movf F,f, и даже movfw F и tstf F. Так что ,0 ,1 можно было писать только из приверженности "самым ранним стандартам".
GS> Hет? Тогда чего ты пургу гонишь? Я этим много лет _успешно_ GS> занимаюсь, вот и делюсь опытом... Я просто _знаю_, что если уж писать большие программы на ассемблере, то _можно_ наделать гораздо более полезных макросов, чем простое переименование мнемоник. А просто объединить decfsz с goto -- было бы чем хвастаться. Это не более, чем костыли под систему команд. Этот вопрос уже обсуждался и я ещё тогда говорил - какой смысл макросами приводить мнемоники разных процессоров к единому виду, если даже банальный inc у разных процессоров действует на разные флаги? Чтобы одинаковость мнемоник скрыла разницу в действиях?