|
структуры в С, копирование в байтовый массив |
|
|
|
 |
Ответов
|
Apr 29 2007, 15:21
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(lks) Когда вы извлекаете адрес переменной с помощью оператора амперсанд - вы получаете адрес переменной. Вы знаете тип переменной? Простая процедура. Этот тип не требует описание его в "хидере". Это не термин - это просто обычный указатель, поддерживаемый стандартными процедурами. Ну я уже не знаю как вам объяснять.  На гайках и автомобилях не понимаете, на яблоки, арбузы и семячки перейти что ли? Указатель в СИ это такая же абстракция как и структура. Поведение указателя после компиляции программы в машинные коды, выполняемые CPU, зависит от конкретного CPU. Если CPU обращается к памяти побайтно, то нет никаких проблем, чтобы адресовать каждый байт. Но если разрядность шины памяти шире 8 бит, то возникают нюансы. На языке ассемблера разница выразится, например в том, что вместо команды MOV.W 0x8(R10), R14 будет использоваться команда MOV.B 0x8(R10), R14. В 16-битной архитектуре такая команда позволяет получить доступ к байту, в отличие от доступа к слову "по-умолчанию". Если в такой системе структура будет иметь выравнивание на байт, то есть вероятность 50/50, что вы обязательно налетите на глюки при использовании "словного" (16-битного) доступа к такой структуре. Причем это даже при доступе к массиву однородных данных относится. Пример. unsigned char mas[5]={0x00, 0x01, 0x02, 0x03, 0x04}; Вне зависимости от архитектуры и способа доступа к памяти байты могут расположится в памяти в порядке как 0x00, 0x01, 0x02, 0x03, 0x04, это нам гарантирует стандарт СИ. Однако извлечение их из памяти будет зависеть от описания способа доступа к памяти, т.к. в физической памяти первый байт массива может расположиться по нечетному адресу, который 16-разрядный CPU напрямую адресовать не может, т.к. у него счетчик (PC) кратно слову (2 байтам) инкрементируется, а не кратно 1 байту. Тогда при извлечении из физической памяти такого массива с 16-разядным доступом мы можем получить двоякий результат 0x00XX, 0x0201, 0x0403 или 0x0100, 0x0302, 0xXX04. Вот к чему может привести свободное манипулирование типами данных.
|
|
|
|
Сообщений в этой теме
tolik_zp структуры в С Apr 26 2007, 16:05 o-henry код в студию Apr 26 2007, 16:10 tolik_zp Цитата(o-henry @ Apr 26 2007, 16:10)... Apr 26 2007, 16:16  o-henry а приведение типов кто делать будет?
ptr = (char*... Apr 26 2007, 16:30  dxp Цитата(tolik_zp @ Apr 26 2007, 20:16) вот... Apr 26 2007, 16:32  lks Попробуйте указать на переменную JmpCmd - т.е. ам... Apr 26 2007, 20:30   Сергей Борщ Цитата(lks @ Apr 26 2007, 19:30) Попробуй... Apr 26 2007, 22:25    lks Цитата(Сергей Борщ @ Apr 26 2007, 23:25) ... Apr 26 2007, 23:10     Сергей Борщ Цитата(lks @ Apr 26 2007, 22:10) Вопрос г... Apr 27 2007, 00:52   zltigo Цитата(lks @ Apr 26 2007, 20:30) а на пер... Apr 26 2007, 23:19 v_shamaev Цитата(tolik_zp @ Apr 26 2007, 17:05) Име... Apr 26 2007, 16:10 zltigo Цитата(tolik_zp @ Apr 26 2007, 16:05) поп... Apr 26 2007, 16:16 rezident Об чем сыр-бор? Явное приведение типов всяко лучше... Apr 27 2007, 01:40 tolik_zp всем спасибо, работает. век живи - век rtfm Apr 27 2007, 12:23  lks Цитата(tolik_zp @ Apr 27 2007, 13:23) все... Apr 27 2007, 18:45   zltigo Цитата(lks @ Apr 27 2007, 18:45) Приведит... Apr 27 2007, 18:57    lks Цитата(zltigo @ Apr 27 2007, 19:57) Для с... Apr 27 2007, 19:53     zltigo Цитата(lks @ Apr 27 2007, 19:53) Ну может... Apr 27 2007, 20:06 sergeeff К сведению: union - платформозависимая штука и в п... Apr 27 2007, 21:01 zltigo Цитата(sergeeff @ Apr 27 2007, 21:01) К с... Apr 27 2007, 21:14  lks Цитата(zltigo @ Apr 27 2007, 22:14) В пла... Apr 27 2007, 22:27   zltigo Цитата(lks @ Apr 27 2007, 22:27) Проблемы... Apr 27 2007, 23:05    lks Цитата(zltigo @ Apr 28 2007, 00:05) Лично... Apr 28 2007, 08:12     dxp Цитата(lks @ Apr 28 2007, 12:12) А всеже ... Apr 28 2007, 09:56      lks Цитата(dxp @ Apr 28 2007, 10:56) Поясните... Apr 28 2007, 11:11       o-henry Цитата(lks @ Apr 28 2007, 10:11) Этот при... Apr 28 2007, 11:53        lks Цитата(o-henry @ Apr 28 2007, 12:53)... Apr 28 2007, 12:58         Сергей Борщ Цитата(lks @ Apr 28 2007, 11:58) Может ну... Apr 28 2007, 13:28       zltigo Цитата(lks @ Apr 28 2007, 11:11) Никто не... Apr 28 2007, 12:09       Сергей Борщ Цитата(lks @ Apr 28 2007, 10:11) Вопрос в... Apr 28 2007, 12:46       dxp Цитата(lks @ Apr 28 2007, 15:11) Значок ... Apr 28 2007, 14:01        lks Цитата(dxp @ Apr 28 2007, 15:01) Неверно.... Apr 28 2007, 15:22         dxp Цитата(lks @ Apr 28 2007, 19:22) Вот так,... Apr 28 2007, 17:21          lks Цитата(dxp @ Apr 28 2007, 18:21) P.P.S. Ч... Apr 28 2007, 21:34           rezident Цитата(lks @ Apr 29 2007, 00:34) typedef ... Apr 28 2007, 22:19          lks Цитата(dxp @ Apr 28 2007, 18:21) Какой пр... Apr 28 2007, 22:26           Legotron Цитата(lks @ Apr 28 2007, 23:26) И все же... Apr 28 2007, 22:58            lks Цитата(Legotron @ Apr 28 2007, 23:58) Я д... Apr 29 2007, 14:26             zltigo Цитата(lks @ Apr 29 2007, 14:26) Возможно... Apr 29 2007, 15:29              lks Цитата(zltigo @ Apr 29 2007, 16:29) Подск... Apr 29 2007, 15:49               Сергей Борщ Ладно, я еще поприкалываюсь
Цитата(lks @ Apr ... Apr 29 2007, 18:02                lks Цитата(Сергей Борщ @ Apr 29 2007, 19:02) ... Apr 29 2007, 19:24                 zltigo Цитата(lks @ Apr 29 2007, 19:24) Что тоже... Apr 29 2007, 19:36                  lks Цитата(zltigo @ Apr 29 2007, 20:36) Блеск... Apr 29 2007, 19:46                   zltigo Цитата(lks @ Apr 29 2007, 19:46) Да нет, ... Apr 29 2007, 20:01                 Сергей Борщ Цитата(lks @ Apr 29 2007, 19:24) В чем пр... Apr 29 2007, 21:03                  lks Цитата(Сергей Борщ @ Apr 29 2007, 22:03) ... Apr 29 2007, 21:31                   zltigo Цитата(lks @ Apr 29 2007, 21:31) книжку п... Apr 29 2007, 21:41                    lks Цитата(zltigo @ Apr 29 2007, 22:41) За яз... Apr 29 2007, 21:50                     zltigo Цитата(lks @ Apr 29 2007, 21:50) А что вы... Apr 29 2007, 22:04                      Legotron Уважаемые собеседники!
Не составит ли вам бол... Apr 29 2007, 22:36                       zltigo Цитата(Legotron @ Apr 29 2007, 22:36) еще... Apr 29 2007, 22:56            Legotron Цитата(Legotron @ Apr 28 2007, 23:58) У м... Apr 29 2007, 15:44             zltigo Цитата(Legotron @ Apr 29 2007, 15:44) Ptr... Apr 29 2007, 15:54              Legotron Цитата(zltigo @ Apr 29 2007, 16:51) ... Apr 29 2007, 15:56               zltigo Цитата(Legotron @ Apr 29 2007, 15:56) why... Apr 29 2007, 16:06                Legotron Цитата(zltigo @ Apr 29 2007, 17:06) Потом... Apr 29 2007, 16:23           rezident Цитата(lks @ Apr 29 2007, 01:26) Непонятн... Apr 29 2007, 00:35         rezident Цитата(lks @ Apr 28 2007, 18:22) Ну тогда... Apr 28 2007, 17:48 o-henry Уважаемый tolik_zp!
На Ваш вопрос Вы уже полу... Apr 28 2007, 15:40 lks Цитата(o-henry @ Apr 28 2007, 16:40)... Apr 28 2007, 15:47  zltigo Цитата(lks @ Apr 28 2007, 15:47) А я не н... Apr 28 2007, 15:57   lks Цитата(zltigo @ Apr 28 2007, 16:57) Тем х... Apr 28 2007, 16:58    zltigo Цитата(lks @ Apr 28 2007, 16:58) По сущес... Apr 28 2007, 17:10 Vladimir Chekin Дежа-вю...
Юзер: - Я решил сварить яйцо в микровол... Apr 28 2007, 19:00 rezident Цитата(Vladimir Chekin)Написать или заказать напис... Apr 28 2007, 19:04 lks Цитата(rezident @ Apr 29 2007, 16:21) Ну ... Apr 29 2007, 16:43  rezident Цитата(lks @ Apr 29 2007, 19:34) Если я н... Apr 29 2007, 16:49  zltigo Цитата(lks @ Apr 29 2007, 16:34) Если я н... Apr 29 2007, 17:10   lks Цитата(zltigo @ Apr 29 2007, 18:10) Для т... Apr 29 2007, 17:25    zltigo Цитата(lks @ Apr 29 2007, 17:25) Список -... Apr 29 2007, 17:47 forever failure Неужели Дохтур Туамосес ? Apr 29 2007, 19:35 Vladimir Chekin rezident >> У вас есть адрес Доктора ТуамОс... Apr 30 2007, 03:24 Vladimir Chekin Может и не в кассу, имхо вот в этой короткой фразе... Apr 30 2007, 04:28 zltigo Цитата(Vladimir Chekin @ Apr 30 2007, 04... Apr 30 2007, 13:30  Dog Pawlowa Цитата(zltigo @ Apr 30 2007, 13:30) Описа... Apr 30 2007, 17:16   zltigo Цитата(Dog Pawlowa @ Apr 30 2007, 17:16) ... Apr 30 2007, 17:28
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|