Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |  |
перепутал. там data_seg 19.04.02 12:03 Число просмотров: 1006
Автор: ggg <ggg> Статус: Elderman
|
|
|
|
<programming>
|
[C++] Можно ли засунуть константы в блок кода, по месту объявления? 18.04.02 04:34
Автор: Zef <Alloo Zef> Статус: Elderman Отредактировано 18.04.02 11:55 Количество правок: 1
|
Мне нужно сделать так, чтобы все инициализированные локальные переменные в функции находились в теле кода, в том месте , где я их объявил. Можно ли заставить VC6.0 сотворить такое?
Дело в том, что кусок кода "разкручивается" в память, как данные, затем запускается на выполнение.
Код должен быть полностью перемещаемым, независимым от адресов размещения, а в нем должна содержаться куча текстовых констант. А VC все константы размещает в сегменте данных.
Конечно, такие вещи принято писать на АСМе, но там необходимо передавать ф-циям АПИ громоздкие структуры и я вконец запутался с адресацией полей. Да и кусок кода не малый.
|
 |
#pragma comment (linker,"-merge:.rdata=.text" ) 19.04.02 21:44
Автор: LiNX Статус: Незарегистрированный пользователь
|
|
|
 |  |
только ещё /section:.text,RWE 20.04.02 00:15
Автор: ggg <ggg> Статус: Elderman
|
|
|
 |  |  |
опять глючу. это не обязательно 20.04.02 01:09
Автор: ggg <ggg> Статус: Elderman
|
|
|
 |
[C++] Можно ли засунуть константы в блок кода, по месту объявления? 18.04.02 23:24
Автор: ggg <ggg> Статус: Elderman
|
засунуть в секцию кода можно (#pragma code_seg(".text"))
а вот сделать перемещаемыми - это вряд ли
|
 |  |
[C++] И близко не лежало! 19.04.02 05:59
Автор: Zef <Alloo Zef> Статус: Elderman
|
#pragma code_seg( ["section-name"[,"section-class"] ] )
Specifies a code section where functions are to be allocated. The code_seg pragma specifies the default section for functions. You can, optionally, specify the class as well as the section name. Using #pragma code_seg without a section-name string resets allocation to whatever it was when compilation began.
Я пока делаю так:
__asm
{
call Next
Next:
pop eax //получили счктчик команд
add eax,9 //сдвинулись на "голову" блока данных
mov Sig,eax //указатель на структуру данных
jmp ex //перепрыгиваем через данные
#include "nop.asm" //нопами забито место под данные
ex:
}
Неудобно - нужно при отладке каждый раз данные подгружать на место "нопов"
|
 |  |  |
перепутал. там data_seg 19.04.02 12:03
Автор: ggg <ggg> Статус: Elderman
|
|
|
|
|