реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как стандартно в Си узнать размер char-а, А соответственно и функции sizeof()
aaarrr
сообщение Aug 21 2009, 07:09
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(GetSmart @ Aug 21 2009, 10:04) *
До сих пор не понял.

Просто BIOS я не использовал.

Цитата(GetSmart @ Aug 21 2009, 10:04) *
тут size передаётся в "железных" USB-байтах, а buf - указатель на буфер, из которого будет извлечено 100% бит, то есть если это char[10], то оттуда передастся 20 "железных" USB-байт.

Тады ой - с нечетным количеством данных получаются грабли sad.gif
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 21 2009, 10:23
Сообщение #17


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(GetSmart @ Aug 21 2009, 09:04) *
тут size передаётся в "железных" USB-байтах
А Вы говорите "октет", как в сетях принято :-)
Именно потому, что байты - они всякие бывают.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 21 2009, 10:29
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ReAl @ Aug 21 2009, 14:23) *
А Вы говорите "октет", как в сетях принято :-)

Да-да, тоже почему-то это слово вспомнилось smile.gif Но ведь сила привычки, от байтов отучиться трудно.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 21 2009, 10:31
Сообщение #19


.
******

Группа: Участник
Сообщений: 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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 21 2009, 12:33
Сообщение #20


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) был неправ (давно было, забывать начал smile.gif ). В плюсах тоже так же: sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 21 2009, 12:49
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 21 2009, 16:46
Сообщение #22


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(SM @ Aug 21 2009, 15:49) *
Т.е. если организовывать полностью произвольный доступ к любому байту - то нужно иметь словесный адрес, бит выбора байта и условное выполнение той или другой команды. Плюс ко всему, если слово памяти может быть аргументом любой арифметики и можно сказать любой операции вообще, то байт из памяти только или load, или store.

Очередное дерьмецо от TI... Годное только для обработки звука.
Непонятно только зачем там USB.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 21 2009, 16:52
Сообщение #23


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(defunct @ Aug 21 2009, 22:46) *
В общем очередное дерьмецо от TI... Годное только для обработки звука.

Щас SM Вас порвёт biggrin.gif

На самом деле, раз адресация в проце на 90% только пословная, то TI сделали правильно. Там только DMA имеет байтовый адрес.

Асмописатели на TMS наверное очень довольны такой архитектурой, в отличие от сишников. SM как раз один из них.

Сообщение отредактировал GetSmart - Aug 21 2009, 16:59


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 21 2009, 17:01
Сообщение #24


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(GetSmart @ Aug 21 2009, 19:52) *
Щас SM Вас порвёт biggrin.gif

Ну от этого Вам будет не легче передать фрейм нечетной длины. :P

А TI изделия (без учета приобретений на стороне - BB, Luminary и т.п.) всегда считал и продолжаю считать неадекватными, за редким исключением.
Почти каждый их DSP / MK - это "шедевр" smile.gif полученный в результате больной фантазии индусов.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 21 2009, 17:32
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(defunct @ Aug 21 2009, 21:01) *
Ну от этого Вам будет не легче передать фрейм нечетной длины. :P

Да легко. DMA-контроллером без участия проца вообще. Откуда угодно, куда угодно, по любым событиям, включая внешние. Это только С-шникам некоторые трудности, да и то, из-за писателей CSL и DSP/BIOS. Без них напрягов нет никаких.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 21 2009, 18:25
Сообщение #26


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(defunct @ Aug 21 2009, 23:01) *
Ну от этого Вам будет не легче передать фрейм нечетной длины. :P

Проблема не в невозможности, а в неудобстве/некрасивости сишной реализации.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Andron_
сообщение Sep 9 2009, 15:52
Сообщение #27


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



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

в каком-то из TI'ных мануалов есть фраза что-то вроде "вообще-то байт конечно 8 бит, но если очень хочется, как у нас, то байт будет 16 бит. Именно в этих 16-ти битных байтах и выдает результат sizeof"... я еще над ней посмеялся))))
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 9 2009, 15:57
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Ну а в C99 написано:
Цитата
3.6
1 byte
addressable unit of data storage large enough to hold any member of the basic character
set of the execution environment
2 NOTE 1 It is possible to express the address of each individual byte of an object uniquely.
3 NOTE 2 A byte is composed of a contiguous sequence of bits, the number of which is implementationdefined.
The least significant bit is called the low-order bit; the most significant bit is called the high-order
bit.

Так что техасцы в своем праве.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01733 секунд с 7
ELECTRONIX ©2004-2016