LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер статически неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как строка-массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так и действительно на сях можно чуть большую программу впихнуть в ту же память. Плавали, знаем. Насчёт итерации я уже меньше уверен, ведь есть же специальные инструкции для итераций по массивам с доп. регистром-счётчиком, если мне не мерещится, конечно. И что, именно по этой причине, ради экономии места на 32-килобайтных машинах в XXI веке операционка на миллиард строк, которая работает на гигабайтах памяти, должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных МК или как их там называют?

Или я всё же ещё что-то упустил?

Исправление den73, :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер статически неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как строка-массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так и действительно на сях можно чуть большую программу впихнуть в ту же память. Плавали, знаем. И что, именно по этой причине в XXI веке операционка на миллиард строк, которая работает на гигабайтах памяти, должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных МК или как их там называют?

Или я всё же ещё что-то упустил?

Исправление den73, :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер статически неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как строка-массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так и действительно на сях можно чуть большую программу впихнуть в ту же память. Плавали, знаем. И что, именно по этой причине в XXI веке операционка на миллиард строк должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных МК или как их там называют?

Или я всё же ещё что-то упустил?

Исправление den73, :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер статически неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как строка-массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так. И что, именно по этой причине в XXI веке операционка на миллиард строк должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных МК или как их там называют?

Или я всё же ещё что-то упустил?

Исправление den73, :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер статически неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так. И что, именно по этой причине в XXI веке операционка на миллиард строк должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных МК или как их там называют?

Или я всё же ещё что-то упустил?

Исправление den73, :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер статически неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так. И что, именно по этой причине в XXI веке операционка на миллиард строк должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных процессорах?

Или я всё же ещё что-то упустил?

Исходная версия den73, :

Если взять Оберон, то там есть тег типа, да, он жирноват. Но в Паскале-то что? Передаёшь адрес массива в любую функцию, если его размер известен статически. Если размер неизвестен, то размер всё равно надо как-то передать, т.е. и в Сях придётся задействовать два регистра. Если же у нас 0-терминированная ASCII строка - то да, она всегда требует ровно 1 байт для хранения длины. В то время как массив потребует аж целых 2 байта, если я не обсчитался, на 32Кб. Ну ок, может быть это и так. И что, именно по этой причине в XXI веке операционка на миллиард строк должна взламываться через переполнение буфера? Ради того, что на этом же языке можно писать на 32-килобайтных процессорах?