powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему так?
79 сообщений из 79, показаны все 4 страниц
почему так?
    #40080379
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 32767
         << s.b << endl // 0
         << s.c << endl // 0
    ;
}


int и uint выдают:
32764-7 (4 варианта)
0
0

но если заменить на short/ushort, то 3 ноля...
шо за?
во1, почему не всегда 3 ноля?
а во2, почему 4-7 ?
...
Рейтинг: 0 / 0
почему так?
    #40080380
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бабушкин зайчик,

какая разница, что лежит в неинициализированных переменных?
...
Рейтинг: 0 / 0
почему так?
    #40080381
обычно там лежит рандомная цифра, в т.ч. отрицательная
а тут нули
...
Рейтинг: 0 / 0
почему так?
    #40080382
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

Просто другой размер переменных и они размещаются в другом месте и там другой мусор ))
А преобладание нулей в мусоре не удивительно, т.к. очень часто память обнуляется при выделении.
...
Рейтинг: 0 / 0
почему так?
    #40080394
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCVC2019 не компилирует
Код: plaintext
1.
error C4700: uninitialized local variable 's' used
...
Рейтинг: 0 / 0
почему так?
    #40080407
EvLaUy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,
Ваш вопрос напоминает анекдот про дискуссию двух раввинов - можно ли считать кошерным яйцо, снесенное курицей в субботу?
...
Рейтинг: 0 / 0
почему так?
    #40080434
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
MCVC2019 не компилирует
Код: plaintext
1.
error C4700: uninitialized local variable 's' used


SDL включён?
...
Рейтинг: 0 / 0
почему так?
    #40080449
бабушкин зайчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 32767
         << s.b << endl // 0
         << s.c << endl // 0
    ;
}



int и uint выдают:
32764-7 (4 варианта)
0
0

но если заменить на short/ushort, то 3 ноля...
шо за?
во1, почему не всегда 3 ноля?
а во2, почему 4-7 ?

забавно, что это и не мусор, оно и сейчас так выдаёт
мусор появляется, если задействовать И short, И int...
...
Рейтинг: 0 / 0
почему так?
    #40080452
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
бабушкин зайчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 32767
         << s.b << endl // 0
         << s.c << endl // 0
    ;
}



int и uint выдают:
32764-7 (4 варианта)
0
0

но если заменить на short/ushort, то 3 ноля...
шо за?
во1, почему не всегда 3 ноля?
а во2, почему 4-7 ?

забавно, что это и не мусор, оно и сейчас так выдаёт
мусор появляется, если задействовать И short, И int...

Попробуйте VS. В отладочной версии там по идее всё должно быть затёрто неким magic number, например, 0xcb.
...
Рейтинг: 0 / 0
почему так?
    #40080457
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
забавно, что это и не мусор, оно и сейчас так выдаёт
мусор появляется, если задействовать И short, И int...

Ничего странного. Перед тем как вызвать main() происходит инициализация библиотеки С++, вызываются какие-то функции, которые пишут в стэк , при возвращении записанное остается в памяти под стэком, где выделяется память под твою переменную s.
Т.к. каждый раз вызываются одни и те же функции, то и мусор получается одинаковый.
...
Рейтинг: 0 / 0
почему так?
    #40080461
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Dima T
MCVC2019 не компилирует
Код: plaintext
1.
error C4700: uninitialized local variable 's' used


SDL включён?

Это что?
Проект "console application" с дефолтными настройками.
...
Рейтинг: 0 / 0
почему так?
    #40080467
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

возьми
int8_t a,b,c;
будет интереснее
...
Рейтинг: 0 / 0
почему так?
    #40080490
Dima T
Т.к. каждый раз вызываются одни и те же функции, то и мусор получается одинаковый.

нет, если к int добавить short
...
Рейтинг: 0 / 0
почему так?
    #40080491
Alex_Ustinov
бабушкин зайчик,

возьми
int8_t a,b,c;
будет интереснее

насколько я понимаю, int и short - это некие базовые типы, которые аж в процессоре зашиты
а int8_t - это уже класс в C++
и выдаёт он пустышки
...
Рейтинг: 0 / 0
почему так?
    #40080494
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Alex_Ustinov
бабушкин зайчик,

возьми
int8_t a,b,c;
будет интереснее

насколько я понимаю, int и short - это некие базовые типы, которые аж в процессоре зашиты
а int8_t - это уже класс в C++
и выдаёт он пустышки

int8_t тоже базовый, usigned chаr, это не класс.
short - это int16_t
int - int32_t

И про выравнивание ты забыл, почитай эту статью .
...
Рейтинг: 0 / 0
почему так?
    #40080499
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчикнет, если к int добавить short

Что, серьёзно при каждом запуске другие значения? Покажешь последовательность?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080501
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

добавь d
int8_t a,b,c,d;

так то же интересно в сравнении
...
Рейтинг: 0 / 0
почему так?
    #40080502
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
petrav
пропущено...

SDL включён?

Это что?
Проект "console application" с дефолтными настройками.

Secure Development Lifecycle. Возможно ещё включён warning as errors.
...
Рейтинг: 0 / 0
почему так?
    #40080504
Dima T
И про выравнивание ты забыл, почитай эту статью .

где это я забыл про выравнивания? Там есть что выравнивать? Как про них вообще можно забыть?

Dimitry Sibiryakov
бабушкин зайчикнет, если к int добавить short

Что, серьёзно при каждом запуске другие значения? Покажешь последовательность?..
0
0
-804835104
22088
0
26272

0
0
-1760038688
21873
0
-29552

0
0
904065248
21908
0
-6032

0
0
1540518112
22076
0
-22128

3 int 3 short
...
Рейтинг: 0 / 0
почему так?
    #40080509
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

какие нить фоновые процессы долбят память.
Да не показатель это
Допустим у меня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 0
         << s.b << endl // 16
         << s.c << endl // 0
    ;
}


добавим d
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
struct S {
    int a,b,c,d;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 0
         << s.b << endl // 0
         << s.c << endl // 0
         << s.d << endl // 0
    ;
}

т.е. b уже 0
...
Рейтинг: 0 / 0
почему так?
    #40080510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик*3 int 3 short*

Увеличив размер структуры, ты увеличил количество захватываемого ею мусора и добрался до
областей, где RTL держало переменную информацию типа текущего времени и адреса возврата из
последнего прерывания таймера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080513
да всё это понятно
непонятно, почему там строго нули имеют место
всегда, если short и всегда 2 ноля, если int
и 32764-7
...
Рейтинг: 0 / 0
почему так?
    #40080516
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как тебе уже сказали: раскручивай ВСЮ цепочку ассемблера, начиная с кодов инициализации
RTL. Тогда поймёшь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080519
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

это кришнаитский вопрос...
над ним лучше даже не задумываться.
Просто нужно всегда инициализировать переменные.
...
Рейтинг: 0 / 0
почему так?
    #40080522
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
всегда

Вы что, бесконечное число раз запускали, чтобы такое утверждать? )))
...
Рейтинг: 0 / 0
почему так?
    #40080571
Anatoly Moskovsky, а вы запускали бесконечное число раз, чтобы утверждать обратное?
...
Рейтинг: 0 / 0
почему так?
    #40080572
Dima T
бабушкин зайчик
пропущено...

насколько я понимаю, int и short - это некие базовые типы, которые аж в процессоре зашиты
а int8_t - это уже класс в C++
и выдаёт он пустышки

int8_t тоже базовый, usigned chаr, это не класс.
short - это int16_t
int - int32_t

И про выравнивание ты забыл, почитай эту статью .

а зачем тогда есть short И int16_t ?
Вообще говорят, что int8_t и uint8_t - это std::
или наоборот int - типизирован вручную... я запутался
авторКороткий ответ: int8_t является signed char на самых популярных платформах (GCC/Intel/Clang на Linux и Visual Studio для Windows), но может быть что-то еще в других.
Header [<cstdint>] определяет все функции, типы и макросы такими же, как 7.18 в C99.

А C99 7.18 гласит: typedef name intN_t обозначает знаковый целочисленный тип с шириной N, без битов дополнений и двухкомпонентное представление.
Таким образом, int8_t обозначает знаковый целочисленный тип с шириной ровно 8 бит.

Рабочий черновик проекта I, N3376, указывает в [cstdint.syn] § 18.4.1, что типы int типично типизированы:
namespace std {
typedef signed integer type int8_t; // optional
typedef signed integer type int16_t; // optional
typedef signed integer type int32_t; // optional
typedef signed integer type int64_t; // optional
typedef signed integer type int_fast8_t;
typedef signed integer type int_fast16_t;
...
}
...
Рейтинг: 0 / 0
почему так?
    #40080584
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
а вы запускали бесконечное число раз, чтобы утверждать обратное?

В отличие от вашей гипотезы, мое утверждение прямо следует из стандарта С/С++, и не нуждается в доказательстве.
...
Рейтинг: 0 / 0
почему так?
    #40080585
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

фикс размеры ввели для кроссплатформенности и независимости от компиляторов
допустим int может быть >16 бит в зависимости от компилятора/архитектуры компьютера
...
Рейтинг: 0 / 0
почему так?
    #40080609
Anatoly Moskovsky
бабушкин зайчик
а вы запускали бесконечное число раз, чтобы утверждать обратное?

В отличие от вашей гипотезы, мое утверждение прямо следует из стандарта С/С++, и не нуждается в доказательстве.

однако противоречит реальности
...
Рейтинг: 0 / 0
почему так?
    #40080610
Alex_Ustinov
бабушкин зайчик,

фикс размеры ввели для кроссплатформенности и независимости от компиляторов
допустим int может быть >16 бит в зависимости от компилятора/архитектуры компьютера

short вы имели ввиду
...
Рейтинг: 0 / 0
почему так?
    #40080616
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бабушкин зайчик
Alex_Ustinov
бабушкин зайчик,

фикс размеры ввели для кроссплатформенности и независимости от компиляторов
допустим int может быть >16 бит в зависимости от компилятора/архитектуры компьютера

short вы имели ввиду


Оба.
[[un]signed] sort [int] -> at least 16
[[un]signed] int -> at least 16
...
Рейтинг: 0 / 0
почему так?
    #40080619
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть хороший английский анекдот на тему сломанных стрелочных часов. Которые дважды
в сутки внезапно показывают точное время.
...
Рейтинг: 0 / 0
почему так?
    #40080646
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Вообще говорят, что int8_t и uint8_t - это std::
или наоборот int - типизирован вручную... я запутался

Можно просто взять и посмотреть stdint.h
У меня в MSVC так написано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
typedef signed char        int8_t;
typedef short              int16_t;
typedef int                int32_t;
typedef long long          int64_t;
typedef unsigned char      uint8_t;
typedef unsigned short     uint16_t;
typedef unsigned int       uint32_t;
typedef unsigned long long uint64_t;
...
...
Рейтинг: 0 / 0
почему так?
    #40080663
ъъъъъ
бабушкин зайчик
пропущено...

short вы имели ввиду


Оба.
[[un]signed] sort [int] -> at least 16
[[un]signed] int -> at least 16

если смотреть в stdint.h, то там int может быть и 8
но по-хорошему он всё таки от 32 должен начинаться
...
Рейтинг: 0 / 0
почему так?
    #40080666
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бабушкин зайчик
но по-хорошему

Это как?
...
Рейтинг: 0 / 0
почему так?
    #40080670
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик, ярчайший пример Undefined Behavior при использовании никем не инициализированных данных.
...
Рейтинг: 0 / 0
почему так?
    #40080672
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что экземпляр структуры на стеке, а на стеке может быть всё, что угодно, так как он используется процедурами инициализации статических объектов и объектов на стеке (в неименованых или анонимных пространствах имён единиц компиляции) ещё до начала main().
...
Рейтинг: 0 / 0
почему так?
    #40080686
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
ъъъъъ
пропущено...


Оба.
[[un]signed] sort [int] -> at least 16
[[un]signed] int -> at least 16

если смотреть в stdint.h, то там int может быть и 8
но по-хорошему он всё таки от 32 должен начинаться

Так исторически сложилось что изначально int был 16 бит на 16-битных системах, потом появились 32-битные, там int стал 32. Поэтому от 16 и больше.
...
Рейтинг: 0 / 0
почему так?
    #40080690
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поиграться:

https://onlinegdb.com/xmp6Prn05
...
Рейтинг: 0 / 0
почему так?
    #40080692
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
бабушкин зайчик
пропущено...

если смотреть в stdint.h, то там int может быть и 8
но по-хорошему он всё таки от 32 должен начинаться

Так исторически сложилось что изначально int был 16 бит на 16-битных системах, потом появились 32-битные, там int стал 32. Поэтому от 16 и больше.

А на восьмибитных системах Си не было?
...
Рейтинг: 0 / 0
почему так?
    #40080694
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Dima T
пропущено...

Так исторически сложилось что изначально int был 16 бит на 16-битных системах, потом появились 32-битные, там int стал 32. Поэтому от 16 и больше.

А на восьмибитных системах Си не было?

Если не путаю, до 16-битных не было ни ОС, ни компиляторов, в машинных кодах писали, на перфокартах и т.п. 8-битная это же всего 256 байт адресуемой памяти.
...
Рейтинг: 0 / 0
почему так?
    #40080699
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
petrav
пропущено...

А на восьмибитных системах Си не было?

Если не путаю, до 16-битных не было ни ОС, ни компиляторов, в машинных кодах писали, на перфокартах и т.п. 8-битная это же всего 256 байт адресуемой памяти.

Z80 — восьмибитный процессор. Там были интерпретаторы, компиляторы и ОС.
...
Рейтинг: 0 / 0
почему так?
    #40080700
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravZ80 — восьмибитный процессор.

Это не мешало ему иметь 16-ти разрядные регистры и арифметику.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080702
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravZ80 — восьмибитный процессор.

Это не мешало ему иметь 16-ти разрядные регистры и арифметику.

Тут написано , что разрядность регистров 8-мь бит.
...
Рейтинг: 0 / 0
почему так?
    #40080703
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Dima T
пропущено...

Если не путаю, до 16-битных не было ни ОС, ни компиляторов, в машинных кодах писали, на перфокартах и т.п. 8-битная это же всего 256 байт адресуемой памяти.

Z80 — восьмибитный процессор. Там были интерпретаторы, компиляторы и ОС.

Не знаю почему он считается 8-мибитным, когда там было 16-битное адресное пространство и команды для операций над двухбайтными (16 бит) операндами, правда операнд писался в два регистра и регистры парами работали.

https://studwood.ru/1676524/informatika/sistema_komand_protsessora
...
Рейтинг: 0 / 0
почему так?
    #40080706
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТут написано, что разрядность регистров 8-мь бит.

А если почитать оригинал , то будет
видно гораздо лучше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080710
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
petrav
пропущено...

Z80 — восьмибитный процессор. Там были интерпретаторы, компиляторы и ОС.

Не знаю почему он считается 8-мибитным, когда там было 16-битное адресное пространство и команды для операций над двухбайтными (16 бит) операндами, правда операнд писался в два регистра и регистры парами работали.
Потому что битность процессора это не размер его регистров, а размер шины данных (data bus). Сколько бит за раз можно послать в процессор и прочитать из него. Размер регистров и адресной шины тут не так важен.
...
Рейтинг: 0 / 0
почему так?
    #40080730
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот термин "битность" (по отношению к процессорам) - злая маркетинговая уловка. Мы только запутаемся обсуждая его.

Наверное лучше от него уйти и говорить об архитектурах типа там IA-64.
...
Рейтинг: 0 / 0
почему так?
    #40080737
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как выяснилось битность процессора и битность типа int это разные параметры, нет смысла обсуждать первое. А int, как понимаю, изначально имел размер самого большого операнда, с которым позволял работать процессор. Во времена появления С это было 16 бит.
...
Рейтинг: 0 / 0
почему так?
    #40080767
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
petrav
пропущено...

А на восьмибитных системах Си не было?

Если не путаю, до 16-битных не было ни ОС, ни компиляторов, в машинных кодах писали, на перфокартах и т.п. 8-битная это же всего 256 байт адресуемой памяти.

Intel8080 - с 8-битным словом, нескольно ОС (СР/М-80, например), компиляторы с кучи языков (в т.ч.. С).
...
У меня даже книжка по языку С есть, там в приложении asm - код (i8080) компилятора C.
...
Рейтинг: 0 / 0
почему так?
    #40080777
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, это...
всё-таки разрабатывался C на базе и для 16-битного компьютера изначально (pdp-11)

А intel-8080 появился на 4 года позже, и были у него компиляторы с фортрана, кобола, бейсика в разнообразии, ну и си, конечно.
не считая ассемблера.

В общем - домашний суперкомпьютер для радиолюбителей.


https://altairclone.com/downloads/manuals/
...
Рейтинг: 0 / 0
почему так?
    #40080791
DHDD
поиграться:

https://onlinegdb.com/xmp6Prn05

тут интереснее
...
Рейтинг: 0 / 0
почему так?
    #40080792
petrav
Dima T
пропущено...

Если не путаю, до 16-битных не было ни ОС, ни компиляторов, в машинных кодах писали, на перфокартах и т.п. 8-битная это же всего 256 байт адресуемой памяти.

Z80 — восьмибитный процессор. Там были интерпретаторы, компиляторы и ОС.

и 64кб памяти
...
Рейтинг: 0 / 0
почему так?
    #40080794
Dima T
Как выяснилось битность процессора и битность типа int это разные параметры, нет смысла обсуждать первое. А int, как понимаю, изначально имел размер самого большого операнда, с которым позволял работать процессор. Во времена появления С это было 16 бит.

но сейчас это разве где-то используется? Сейчас есть short и int. И везде есть C/C++, который с ними и работает.
...
Рейтинг: 0 / 0
почему так?
    #40080799
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Dima T
пропущено...

Если не путаю, до 16-битных не было ни ОС, ни компиляторов, в машинных кодах писали, на перфокартах и т.п. 8-битная это же всего 256 байт адресуемой памяти.

Intel8080 - с 8-битным словом, нескольно ОС (СР/М-80, например), компиляторы с кучи языков (в т.ч.. С).
...
У меня даже книжка по языку С есть, там в приложении asm - код (i8080) компилятора C.

Он нормально работал с 16-битными операндами, int на нем был 16 бит, как и на Z80. Как уже сказали выше: 8-мибитной была шина данных, поэтому он считался 8-мибитным.
...
Рейтинг: 0 / 0
почему так?
    #40080800
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Dima T
Как выяснилось битность процессора и битность типа int это разные параметры, нет смысла обсуждать первое. А int, как понимаю, изначально имел размер самого большого операнда, с которым позволял работать процессор. Во времена появления С это было 16 бит.

но сейчас это разве где-то используется? Сейчас есть short и int. И везде есть C/C++, который с ними и работает.

Думаю уже нигде не надо 16-тибитный int, но сообщество разработчиков С/С++ зациклено на обратной совместимости, поэтому поддерживается.
...
Рейтинг: 0 / 0
почему так?
    #40080801
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
petrav
пропущено...

Z80 — восьмибитный процессор. Там были интерпретаторы, компиляторы и ОС.

и 64кб памяти

2^16 = 64k
...
Рейтинг: 0 / 0
почему так?
    #40080810
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
ъъъъъ
пропущено...

Intel8080 - с 8-битным словом, нескольно ОС (СР/М-80, например), компиляторы с кучи языков (в т.ч.. С).
...
У меня даже книжка по языку С есть, там в приложении asm - код (i8080) компилятора C.

Он нормально работал с 16-битными операндами, int на нем был 16 бит, как и на Z80. Как уже сказали выше: 8-мибитной была шина данных, поэтому он считался 8-мибитным.

Ну как мы выяснили, регистры на Z80 были, всё же, тоже восьмибитными.
...
Рейтинг: 0 / 0
почему так?
    #40080812
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забывай, что у него была сегментная адресация памяти. До гигабайта он мог адресовать ЕМНИП.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080813
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravкак мы выяснили, регистры на Z80 были, всё же, тоже восьмибитными.

Ты так и не прочитал оригинал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080889
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Не забывай, что у него была сегментная адресация памяти. До гигабайта он мог адресовать ЕМНИП.

У i8080/z80? Не было, не мог.
...
Рейтинг: 0 / 0
почему так?
    #40080906
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно, не мог.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080907
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Intel 8088
Intel 8088 — 16-битный микропроцессор, выпущенный компанией Intel 1 июля 1979 года и основанный на микропроцессоре Intel 8086, но имевший 8-битную шину данных
Маркетинг вся эта битность процов
...
Рейтинг: 0 / 0
почему так?
    #40080910
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
Intel 8088
Intel 8088 — 16-битный микропроцессор, выпущенный компанией Intel 1 июля 1979 года и основанный на микропроцессоре Intel 8086, но имевший 8-битную шину данных

Маркетинг вся эта битность процов
Чёйта? С т.зр. программиста i8088 вполне себе 16-битный.
А i8080 - 8 битный. С памятью можно было работать исключительно побайтно. Загрузка 16-битных регистров из памяти - минимум две команды. Правда, можно было изгальнуться, и выгребать сразу по 2 байта за команду, сохраняя/восстанавливая 16-битный указатель стека, что заметно увеличивало скорость пересылки блоков. Об этом фокусе целая статья в "МПСС" была, и я когда-то BIOS для CP/M-80 переписал, используя такой приём.
...
... изначально пустая тема 6ачала петлять.
...
Рейтинг: 0 / 0
почему так?
    #40080915
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из курса ЦУМПС я помню что в процессоре различают разрядности шин данных и шин адреса и шин управления.
Это было где-то в 1990х. Что такое разрядность для современного CPU? Разрядность РОН? Разрядность расширенных
регистров типа SSE3/AVX ? Что такое шина адреса? Там кажется есть универсальная шина которая меняет своё назначение.
Что такое чтение памяти для Z80? Чтение байта по адресу? Что такое чтение памяти для современного CPU? Выборка всей
кеш-линии?

Что такое разрядность современных видеокарт? Там - вообще конь не валялся. Там можно утонуть в инженерных
допущениях. А процессоров/ядер/threads там сколько? А что считать процессором?

Что AMD и что Intel считает ядром?
...
Рейтинг: 0 / 0
почему так?
    #40080916
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
А i8080 - 8 битный. С памятью можно было работать исключительно побайтно. Загрузка 16-битных регистров из памяти - минимум две команды.

Выше про Z80 было 22341489 , тоже 8-мибитным считается, но это умеет.
...
Рейтинг: 0 / 0
почему так?
    #40080917
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MK52 имел шину данных 1 бит, с памятью общался по биту. Его процессор однобитный?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080924
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что такое разрядность для современного CPU?
Разрядность виртуальных адресов.Что AMD и что Intel считает ядром?Натурально - ЦПУ. Иногда - даже без SSE :)
...
Рейтинг: 0 / 0
почему так?
    #40080925
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ

А i8080 - 8 битный. С памятью можно было работать исключительно побайтно. Загрузка 16-битных регистров из памяти - минимум две команды. Правда, можно было изгальнуться, и выгребать сразу по 2 байта за команду, сохраняя/восстанавливая 16-битный указатель стека, что заметно увеличивало скорость пересылки блоков.

Это как? Поподробнее можно? Пересылать блоки памяти через регистр стека?
...
Рейтинг: 0 / 0
почему так?
    #40080927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8 бит шина данных для Z80. На схеме видно.

...
Рейтинг: 0 / 0
почему так?
    #40080932
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К счастью, это не мешает Си иметь типы с разрядностью больше, чем у ШД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080948
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что такое разрядность для современного CPU?
Разрядность виртуальных адресов.
Мда... красиво сказано. И вить не придерёшся. Виртуальных мать их адресов!
А на материнку всё равно могу поставить только 32Гб. Из 64 бит используем только 35.
...
Рейтинг: 0 / 0
почему так?
    #40080956
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
ъъъъъ

А i8080 - 8 битный. С памятью можно было работать исключительно побайтно. Загрузка 16-битных регистров из памяти - минимум две команды. Правда, можно было изгальнуться, и выгребать сразу по 2 байта за команду, сохраняя/восстанавливая 16-битный указатель стека, что заметно увеличивало скорость пересылки блоков.

Это как? Поподробнее можно? Пересылать блоки памяти через регистр стека?

Не, регистр стека только как указатель использовался. Выставляешь указатель стека (PSW) на хвост обрабатываемого блока, потом - POP <пара 8-битных регистров>. Получаешь сразу два байта в нужной паре регистров плюс модификацию PSW на 2. Т.е., косвенная адресация 16-битного слова с авто инкрементом/декрементом. А если использовать "обычные" команды с косвенной адресацией - то только по одному байту, и без Модификации указателя.
Очень круто было. . Прямо вот сразу заметно. Например, скролл массива видеопамяти стал без видимых лагов.
...
Рейтинг: 0 / 0
почему так?
    #40080959
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А на материнку всё равно могу поставить только 32Гб. Из 64 бит используем только 35.
А не надо путать виртуальные адреса и физические.
...
Рейтинг: 0 / 0
почему так?
    #40080992
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

MK52 имел шину данных 1 бит, с памятью общался по биту. Его процессор однобитный?
А фиг его знает :)
По смутным воспоминаниям, тамошний CPU считался четырехбитным. А какой он в действительности я не знаю и найти в документации не могу. Максимум что сейчас нашел - маркировку: k145i1302
Что забавно, его сейчас можно запросто купить, но все магазины его держат в секции "для частных коллекций и музеев"
...
Рейтинг: 0 / 0
почему так?
    #40080997
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Dimitry Sibiryakov

MK52 имел шину данных 1 бит, с памятью общался по биту. Его процессор однобитный?
А фиг его знает :)
По смутным воспоминаниям, тамошний CPU считался четырехбитным. А какой он в действительности я не знаю и найти в документации не могу. Максимум что сейчас нашел - маркировку: k145i1302

Насколько помню, и стек и регистры — они все были в формате плавающей точки. Сколько байт не знаю.
А вот машинные коды хранились в виде байт — 98 ячеек. А отображались кажется в hex.

Там не было таких вопросов: за две команды загрузить 16-ть битный регистр.
...
Рейтинг: 0 / 0
почему так?
    #40080998
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное битность не имеет смысла без режима адресации. Как насчет PAE?
Позволяет 32х битным серверам использовать более 4Гб на процесс.
...
Рейтинг: 0 / 0
почему так?
    #40081018
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Позволяет 32х битным серверам использовать более 4Гб на процесс.
Ещё раз повторю - не надо путать виртуальные адреса и физические.
PAE позволяет использовать более 4ГБ (до 64ГБ) физической памяти. Процессу как было доступно "4ГБ минус нужды ОС" - так и осталось. Выигрыш получается за счёт того, что переключить карту памяти для двух разных процессов - гораздо быстрее, чем (полностью) высвопить на диск страницы одного процесса, чтобы загрузить страницы другого.
Ещё один вариант использования PAE - этакий LIM EMS на стероидах: есть окно, в которое можно (быстро) отобразить разные участки физической памяти. Это, если правильно помню, называется AWE.
...
Рейтинг: 0 / 0
79 сообщений из 79, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему так?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]