The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз набора компиляторов GCC 13, opennews (??), 26-Апр-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


5. "Релиз набора компиляторов GCC 13"  +3 +/
Сообщение от Жироватт (ok), 26-Апр-23, 17:16 
Для детей, выросших на всяких нескучных язычках с выводм типа при копиляции? Ну чтобы не пугать их компиляторозависимыми {инт, инт_малый, инт_большой, инт_оче_большой, инт_с_перламутровыми_пуговицами, инт_от_майкрософтов}.
А может в качестве иллюстрации того, что почти все типы в С так или иначе есть особо интерпретирумое в зависимости от указнного в коде токена, int.
А может просто, по приколу, чтобы число-размер от sizeof(х) было нескучным.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

7. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (7), 26-Апр-23, 17:32 
В си всё void* и любые типы это всего-лишь небольшой сахарок компилятора, было бы чем пугать. Мне кажется сомнительной идея перетягивать всё из плюсов, всё равно типизации в языке 0.
Ответить | Правка | Наверх | Cообщить модератору

13. "Релиз набора компиляторов GCC 13"  –3 +/
Сообщение от Жироватт (ok), 26-Апр-23, 17:51 
Ну, указатели (тупо целое положительное число в hex) уже вводит их в ступор.
И если с функцией, возвращающее это число, они еще более-менее справляются, и даже могут дать команду освободить занятое по нему, то примитивнейшая арифметика с ним, их уже выводит в кататонический ступор.
А ты говоришь чем пугать, чем пугать.
> Мне кажется сомнительной идея перетягивать всё из плюсов,

Ну, лишний сахарок, если его немного, редко когда откровенно вредным. Особенно если он сможет в распознавание user-defined типо, вроде struct this_is_very_important_self_documented_struct_type_caption_of_piece_userdata_staff, спрятанного в заголовочнике

Ответить | Правка | Наверх | Cообщить модератору

77. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от warlock66613email (ok), 26-Апр-23, 22:05 
> указатели (тупо целое положительное число в hex)

Oh, my sweet summer child…

Ответить | Правка | Наверх | Cообщить модератору

80. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (78), 26-Апр-23, 22:08 
Не пугай кататоника.
Ответить | Правка | Наверх | Cообщить модератору

132. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Жироватт (ok), 27-Апр-23, 08:16 
Таки шо вы таки говорите...
Ответить | Правка | К родителю #77 | Наверх | Cообщить модератору

228. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (228), 27-Апр-23, 21:12 
Оно точно положительное? Есть отрицательный указатель? Может просто hex для удобства, а на самом деле указатель и в двоичной и в десятичной и в восмеричной нотации можно написать?
Ответить | Правка | К родителю #77 | Наверх | Cообщить модератору

265. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 28-Апр-23, 07:10 
Адрес в памяти по определению положителен. Указатель помимо адреса может включать содержимое сегментного регистра, например.
Ответить | Правка | Наверх | Cообщить модератору

277. "Релиз набора компиляторов GCC 13"  +/
Сообщение от warlock66613email (ok), 28-Апр-23, 10:49 
Я бы для начала спросил: а является ли указатель числом (адресом)? И ответ: нет, не является. (Но даже и с адресом уже кстати всё может быть не так просто. Например, он может быть не числом, а парой чисел.)
Ответить | Правка | Наверх | Cообщить модератору

282. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 28-Апр-23, 12:54 
> Я бы для начала спросил: а является ли указатель числом (адресом)? И ответ: нет, не является.

ISO/IEC 9899:2017

6.2.5 Types

21 Arithmetic types and pointer types are collectively called scalar types. ...

Не вижу где стандарт формализует, что такое скаляр, но из математики известно, что это одно число.

Указатель это абстракция над адресом, описывает так же и тип адресуемого объекта (в следствии чего инкремент указателя может увеличить адрес на больше чем 1).

> (Но даже и с адресом уже кстати всё может быть не так просто.
> Например, он может быть не числом, а парой чисел.)

С адресом всё достаточно просто на физическом уровне, если иметь представление о шине адреса. Пара чисел для динамического ОЗУ (строка + столбец) окажутся просто разными разрядами одного числа. Если есть преобразование в виртуальные адреса, то на уровне приложений его не видно. Процессор может адресовать ячейку парой регистров, о чём я написал (в DOS-е вроде 20 бит был указатель, сегментный регистр + РОН).

Ответить | Правка | Наверх | Cообщить модератору

292. "Релиз набора компиляторов GCC 13"  +/
Сообщение от warlock66613email (ok), 28-Апр-23, 15:49 
> в DOS-е вроде 20 бит был указатель

Не совсем в DOS (а вообще в реальном режиме) и не совсем 20 (мог быть и 20, и 16, и даже 32 бита, причём не в виде единого числа, а именно в виде пары 16-битных чисел), но это уже несколько анахронизм. А из современного в поисках необычных указателей лучше посмотреть на архитектуру CHERI.

Но главное, что всё это относится только к указателю во время выполнения. А есть ещё время компиляции, когда даже на "обычных" архитектурах указатель не является адресом.

(
> Не вижу где стандарт формализует, что такое скаляр

Да вот ровно в процитированной вами строчке и формализует: arithmetic types and pointer types. Nothing more, как говорится.
)

Ответить | Правка | Наверх | Cообщить модератору

301. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 28-Апр-23, 18:35 
>> в DOS-е вроде 20 бит был указатель
> Не совсем в DOS (а вообще в реальном режиме) и не совсем
> 20 (мог быть и 20, и 16, и даже 32 бита,
> причём не в виде единого числа, а именно в виде пары
> 16-битных чисел), но это уже несколько анахронизм.

Я так и не понял, зачем повторно вырезаете мои слова про сегментный регистр и регистр общего назначения (РОН) и пишете про два числа. Адрес, по которому процессор читает или пишет, определяется опкодом (полями R/M и SIB) и префиксом смены сегментного регистра, если он есть. В результате декодирования и исполнения команды на шину адреса выставляется одно "число".

>> Не вижу где стандарт формализует, что такое скаляр
> Да вот ровно в процитированной вами строчке и формализует: arithmetic types and
> pointer types. Nothing more, как говорится.

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

Ответить | Правка | Наверх | Cообщить модератору

302. "Релиз набора компиляторов GCC 13"  +/
Сообщение от warlock66613email (ok), 28-Апр-23, 19:09 
> Адрес, по которому процессор читает или пишет, определяется <...> В
> результате декодирования и исполнения команды на шину адреса выставляется одно "число".

Ну надо же, какой умный этот ваш процессор.

>>> Не вижу где стандарт формализует, что такое скаляр
>> Да вот ровно в процитированной вами строчке и формализует: arithmetic types and
>> pointer types. Nothing more, как говорится.
> Сказано, что указатель является скаляром, как и целые.

Не знаю, то ли вы переводите неправильно с английского, то ли ещё что, поэтому переведу:

> Arithmetic types and pointer types are collectively called scalar types.
> Арифметические типы и типы указателей вместе называются скалярными типами.

Это просто определение "скалярного типа", не больше и не меньше. Ни о каких числах тут речи не идёт.

Ответить | Правка | Наверх | Cообщить модератору

304. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 28-Апр-23, 20:04 
>> Адрес, по которому процессор читает или пишет, определяется <...> В
>> результате декодирования и исполнения команды на шину адреса выставляется одно "число".
> Ну надо же, какой умный этот ваш процессор.

Вы заявляли про два числа. Откуда они взялись?

>>>> Не вижу где стандарт формализует, что такое скаляр
>>> Да вот ровно в процитированной вами строчке и формализует: arithmetic types and
>>> pointer types. Nothing more, как говорится.
>> Сказано, что указатель является скаляром, как и целые.
> Не знаю, то ли вы переводите неправильно с английского, то ли ещё
> что, поэтому переведу:
>> Arithmetic types and pointer types are collectively called scalar types.
>> Арифметические типы и типы указателей вместе называются скалярными типами.
> Это просто определение "скалярного типа", не больше и не меньше. Ни о
> каких числах тут речи не идёт.

types - это множественное число.
Ни о каком одном типе тут речи не идёт.
И арифметический тип - скалярный тип.
И указатель - скалярный тип.
Может надо еще и scalaris перевести с латыни? Ступенчатый. В единичной системе счисления осталось записать для наглядности.

Далее в том же пункте указаны агрегатные (составные) типы: Array and structure types are
collectively called aggregate types.

"Два числа" это как раз составной тип.

Ответить | Правка | Наверх | Cообщить модератору

306. "Релиз набора компиляторов GCC 13"  +/
Сообщение от warlock66613email (ok), 28-Апр-23, 21:33 
> Вы заявляли про два числа. Откуда они взялись?

В программах на Си для реального режима x86 дальние (far) указатели представлены парой шестнадцатибитных чисел — селектором и смещением.

Ответить | Правка | К родителю #304 | Наверх | Cообщить модератору

308. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 29-Апр-23, 11:05 
>> Вы заявляли про два числа. Откуда они взялись?
> В программах на Си для реального режима x86 дальние (far) указатели представлены
> парой шестнадцатибитных чисел — селектором и смещением.

Вопрос был, откуда это мнение взято.

Цитирую IA-32 SDM, Vol 1:

1.3.4 Segmented Addressing
...
The following notation is used to specify a byte address within a segment:
Segment-register:Byte-address

For example, the following segment address identifies the byte at address FF79H in the segment pointed by the DS register:
DS:FF79H

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


Цитирую Ваше сообщение #277

"является ли указатель числом (адресом)? И ответ: нет, не является."

По-вашему, указатель не является адресом, значит к нему "пара чисел" из SDM не применимо.

В стандарте Си указатель назван скаляром. Из чего следует, что "в программах на Си для реального режима x86" одно число (значение указателя) загружается в регистровую пару из селектора и РОНа.

Ответить | Правка | К родителю #306 | Наверх | Cообщить модератору

345. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (78), 02-Май-23, 03:12 
> В программах на Си для реального режима x86 дальние (far) указатели представлены
> парой шестнадцатибитных чисел — селектором и смещением.

Интересно насколько вообще то нечто вообще соответствовало каким либо стандартам си.

Ответить | Правка | К родителю #306 | Наверх | Cообщить модератору

319. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (319), 30-Апр-23, 09:23 
так адрес в памяти или адрес памяти ?
Ответить | Правка | К родителю #265 | Наверх | Cообщить модератору

320. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 30-Апр-23, 10:37 
Адрес ячейки. Ячейка памяти находится в памяти. Русский язык позволяет опускать очевидные из контекста слова, заодно отсеивая башпрограммистов.
Ответить | Правка | Наверх | Cообщить модератору

149. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (149), 27-Апр-23, 10:09 
>  Ну, указатели (тупо целое положительное число в hex) уже вводит их в ступор.

Начитаются такого и потом конпелируют только с -O0 потому, что даже -O1 "бажит" их божественный код...

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

49. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (49), 26-Апр-23, 20:55 
> В си всё void* и любые типы это всего-лишь небольшой сахарок компилятора, было бы чем пугать.

В любом языке со статической типизацией типы -- это "всего-лишь небольшой сахарок компилятора". Информация о типах теряется после компиляции, типы не переживают AST.

> всё равно типизации в языке 0.

0 в ассемблере.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

60. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (60), 26-Апр-23, 21:36 
> В любом языке со статической типизацией типы -- это "всего-лишь небольшой сахарок компилятора".

C++ там есть рантайм инфа о типе для динамического каста.

Ответить | Правка | Наверх | Cообщить модератору

82. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (78), 26-Апр-23, 22:11 
> Информация о типах теряется после компиляции, типы не переживают AST.

Какой-нибудь ubsan очень резко не согласится с тобой. Он очень даже переживает это и прекрасно расскажет в какой переменной с каким типом ты дал маху. Разумеется оверхед на рантайм проверки значений добавится а размер бинаря станет крупнее, за счет хранения вот этих сведений и кода с проверками. Но так можно из сей сделать что-то типа явы или дотнета, если вы это и правда хотели, особенно если asan еще включить :)

>> всё равно типизации в языке 0.
> 0 в ассемблере.

И даже там чуть более чем ноль может быть. Скажем можно проверить что константа лезет в регистр, все такое.

Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

21. "Релиз набора компиляторов GCC 13"  –2 +/
Сообщение от Бывалый смузихлёб (?), 26-Апр-23, 18:34 
Когда в якобы типизированные ЯП вводили подобия auto - иные адепты типизации и параллельно ненавистники недостаточно-типизированного жс с ходу начинали сс.ать кипятком и в три пасти жрать из корыта
Дело, похоже, совсем не в детях. А если бы не хотели их пугать - так не показывали бы лишний раз раст


Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

143. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от 4рл (?), 27-Апр-23, 09:37 
inttype.h сто лет в обед, а вы до сих пор "платформозависимые" используете?
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру