|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 14, 2003 00:46:23 Как сделать чтобы массивы находились в одной структуре! допустим: mas1 dd 1 dd 2 dd 3 dd 4 mas2 dd 10 dd 11 dd 12 dd 13 Как все это увязать в структуру, чтобы записывать по 8 байт изначения распределялись бы равномерно по 4 байта в каждый массив... :-))) |
|
|
Дата: Окт 14, 2003 01:00:58 А где там 8 байт? Я вижу 16 байт в одном массиве и 16 в другом. чтобы записывать по 8 байт изначения распределялись бы равномерно Приведи пример подобной записи. Суть задачи не ясна. При чём здесь структуры? mas1 dd 4 dup (0) mas2 dd 4 dup (0)При записи 32 байт в mas1, последние 16 окажутся в mas2. В чём собственно проблема? |
|
|
Дата: Окт 14, 2003 01:05:36 Quantum Задумка в том чтобы массивы распологались в структуре mas1 mas2 и если бы мы записывали числа 1,2,3,4,5,6,7,8,9,10 по 4 байта то они бы расположились вот так mas1:1,3,5,7,9 mas2:2,4,6,8,10 |
|
|
Дата: Окт 14, 2003 06:43:42 · Поправил: Quantum emergenter Так их можно записать в изначальном порядке: mas1 dd 1 mas2 dd 2,3,4,5,6,7,8,9,10 Потом для доступа к элементам из mas1: mov DWORD PTR [mas1 + 8 * i],val ; <- Записываем val в
; ячейку i из mas1
mov DWORD PTR [mas2 + 8 * i],val ; <- Записываем val в
; ячейку i из mas2Для чтения, массивы индексируются аналогичным образом. Ещё можно написать макрос. |
|
|
Дата: Окт 14, 2003 13:42:24 Quantum Дело в том когда делаешь внешнюю процедуру и подаешь туда только укзатели на первые элементы... то я думаю есть смысл задуматься об оптимальном копировании |
|
|
Дата: Окт 20, 2003 18:17:31 Подскажите пожалуйста как можно динамичесик выделять и освобождать память , например, по массив. Спасибо. |
|
|
Дата: Окт 20, 2003 18:21:42 Gromozeka, VirtalAlloc/VirtualFree, MMF, Heap-функции, etc. |
|
|
Дата: Окт 20, 2003 19:16:55 Gromozeka Выбор предложенных masquer'ом функций зависит от необходимого объёма памяти. Ещё можно предложить стек для выделения небольших блоков памяти (пару Кб). |
|
|
Дата: Окт 20, 2003 20:10:04 · Поправил: Gromozeka Спасибо за ответы. Способ предложенный Quantum'ом мне не подходит, потому что с элементами данного массива мне прийдеться еще вычисления проводить, а извлекать и помещать в стек все время не целезообразно. Вы бы не могли подсказать где об этом можно почитать, потому что в Рудакове и Феногенове, Сване и Юрове я этого не нашел. Спасибо за помощь. |
|
|
Дата: Окт 20, 2003 21:11:37 · Поправил: Quantum Gromozeka а извлекать и помещать в стек все время не целезообразно. Так и незачем извлекать и помещать. Вы каким ассемблером пользуетесь? Если масмом, то myProc PROC LOCAL dynamic[1024]:BYTE ; В dynamic теперь 1К динамической памяти ; и доступ к ней можно осуществлять напрямую ret ; А здесь dynamic уже умер. myProc ENDP |
|
|
Дата: Окт 20, 2003 21:14:01 Вы бы не могли подсказать где об этом можно почитать На сайте лежат статьи Edmond'а про память и иже с ней. |
|
|
Дата: Окт 21, 2003 17:34:31 Я пользуюсь TASM'ом. Статьи Edmond'a я нашел(1,3 и 4-ую), а 2-ой там нет. |
|
|
Дата: Окт 21, 2003 21:06:22 Gromozeka В тасме, наверное, можно так: sub esp,1024 ; <- выделили 1К памяти в стеке add esp,1024 ; <- удалили эту памятьА про HeapAlloc вы уже почитали? |
|
|
Дата: Ноя 1, 2003 00:30:45 Правка myProc PROC LOCAL dynamic[1024]:BYTE ; В dynamic теперь 1К динамической памяти ; и доступ к ней можно осуществлять напрямую ret ; А здесь dynamic уже умер. myProc ENDP А если ret'ов несколько? Ведь часто в исходниках такое встречаешь, что вместо прыжка на конец процедуры пишут просто ret Что тогда случится? |
|
|
Дата: Ноя 1, 2003 01:54:02 IceStudent В данном случае ret рассматривается не как команда, а как конец процедуры. Поэтому если в процедуре встречается несколько ret'ов, то dynamic "умрет" только после выполнения одной из этих комманд, т.е. после выхода из процедуры. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.108 |