|
Как стандартно в Си узнать размер char-а, А соответственно и функции sizeof() |
|
|
|
Aug 21 2009, 10:31
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(ReAl @ Aug 21 2009, 16:23)  А Вы говорите "октет", как в сетях принято :-) Именно потому, что байты - они всякие бывают. Цитата(http://en.wikipedia.org/wiki/Byte) The popularity of IBM's System/360 architecture starting in the 1960s and the explosion of microcomputers based on 8-bit microprocessors in the 1980s has made eight bits by far the most common size for a byte. The term octet is widely used as a more precise synonym where ambiguity is undesirable (for example, in protocol definitions). Ну да, исхитрились. Хотя в русской литературе везде байтом считается 8 бит без каких-либо оговорок. Даже в доке от TI Цитата(spru587e.pdf @ page 28) Byte = An 8-bit value. A byte is the smallest unit of data transferred in a DMA channel.
Сообщение отредактировал GetSmart - Aug 21 2009, 10:35
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 21 2009, 12:33
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(SM @ Aug 21 2009, 11:22)  На этом TMS-е есть адресации "low_byte(addr)" и "high_byte(addr)" для команд load/store. Так что байт там как у всех. А по скорости/накладным они такие же, как и для словной адресации? Или это некое расширение, реализуемое за счет эмуляции (типа, слово считывается целиком, в АЛУ модифицируется нужный байт и потом складываются в память)? Цитата(aaarrr @ Aug 21 2009, 11:39)  Тогда несостыковка получается, т.к. явно указывается, что sizeof(char)=1. То есть если у системы восьмибитный байт, то char тоже обязан быть восьмибитным. Да, насчет sizeof(char) был неправ (давно было, забывать начал  ). В плюсах тоже так же: sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 21 2009, 12:49
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(dxp @ Aug 21 2009, 16:33)  А по скорости/накладным они такие же, как и для словной адресации? Или это некое расширение, реализуемое за счет эмуляции (типа, слово считывается целиком, в АЛУ модифицируется нужный байт и потом складываются в память)? Да, по скорости и накладным тоже самое, но только в том случае, если заранее известно, какой байт нужен - low или high. К АЛУ это отношения не имеет, так как при обращениях оно управляет сигналами "byte enable (BE[1:0])" шины, или DQM-ами, если это SDRAM. Но адрес-то при этом все равно словесный, а выбор байта осуществляется при помощи указания конкретной команды ассемблера. Т.е. если организовывать полностью произвольный доступ к любому байту - то нужно иметь словесный адрес, бит выбора байта и условное выполнение той или другой команды. Плюс ко всему, если слово памяти может быть аргументом любой арифметики и можно сказать любой операции вообще, то байт из памяти только или load, или store.
|
|
|
|
|
Aug 21 2009, 16:52
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(defunct @ Aug 21 2009, 22:46)  В общем очередное дерьмецо от TI... Годное только для обработки звука. Щас SM Вас порвёт  На самом деле, раз адресация в проце на 90% только пословная, то TI сделали правильно. Там только DMA имеет байтовый адрес. Асмописатели на TMS наверное очень довольны такой архитектурой, в отличие от сишников. SM как раз один из них.
Сообщение отредактировал GetSmart - Aug 21 2009, 16:59
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 9 2009, 15:52
|
.NET developer
  
Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532

|
Цитата(dxp @ Aug 21 2009, 11:13)  Насколько помню, sizeof возвращает размер в минимально адресуемых единицах на данной платформе. И "байтом" обычно эту минимально адресуемую ячейку памяти и называют, другими словами, на этом TMS'е байт как раз 16 бит. Поэтому sizeof выдает правильный результат. в каком-то из TI'ных мануалов есть фраза что-то вроде "вообще-то байт конечно 8 бит, но если очень хочется, как у нас, то байт будет 16 бит. Именно в этих 16-ти битных байтах и выдает результат sizeof"... я еще над ней посмеялся))))
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|