![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
AlexDon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
Пишу программу на BC 3.1 под DOS. Заранее перевожу процессор в так нзываемый "unreal mode", то есть через регистр fs (gs) я могу адресовать память свыше 1Мб, типа (на ASM)
.386 mov eax,index ; index>0x100000 mov fs:[eax],val ; или mov val,fs:[eax] ... На базе этого дела хочу создать класс для обслуживания массива такой памяти, который позволял бы что-то вроде этого: class My_Mas { ... }; My_Mas mm(30); int a = mm[4]; mm[2] = a+3; Подскажите, кто может, какую-нибуть идею. |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
|
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
скорее
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
AlexDon |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
То, что Вы написали, обслуживает правильно только a = mm[4], а как быть с mm[4] = a ??? |
||||||
|
|||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
AlexDon |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
Не работает, так как mm[4] = a транслятор преобразует во что-то такое: mov es,dx mov bx,ax mov es:[bx],cx а мне нужно: .386 mov eax,100000h add eax,4*2 mov fs:[eax],cx |
||||
|
|||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
AlexDon,
хе. ну завтавить компилятор генерировать именно такой код, ты не можешь. Но такая конструкция вполне работоспособна с точки зрения С++ |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
пишите asm-вставки как Вам нужно ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
AlexDon |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
Дело в том, что когда я перезагружаю оператор [], то в качестве параметра я получаю только индекс, но не значение, которое по этому индексу нужно записать, поэтому внутри этого оператора моя вставка asm бессмыслена. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |