Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+5 невидимых)

 eXeL@B —› Программирование —› Создание строк в секции .data - язык C
Посл.ответ Сообщение

Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 05 сентября 2008 14:53 · Поправил: progopis
· Личное сообщение · #1

Вот такая попытка создать строку:
Code:
  1. char * mystr = "Vbfg!" ;

В дизасссемблере будет выглядеть так:
Code:
  1. ; Segment type: Pure data
  2. ; Segment permissions: Read
  3. _rodata   segment  dword public 'CONST' use32
  4.                  assume cs:_rodata
  5.                  ;org 8000090h
  6. aVbfg       db 'Vbfg!',0            ; DATA XREF: main+11o

То есть будет являться константной и не может быть изменена в силу отсутствия доступа к сегменту для записи. Мне же нужна строка, которая сразу после компиляции будет лежать в секции .data, которая Read/Write. Как её сделать?




Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 05 сентября 2008 15:33 · Поправил: =TS=
· Личное сообщение · #2

Code:
  1. static char mystr[512] = "Vbfg!";


или если максимальный размер строки равен начальному:

Code:
  1. static char mystr[] = "Vbfg!";


-----
DREAMS CALL US




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 05 сентября 2008 15:42
· Личное сообщение · #3

Помогло, спасибо!
Тока вот она теперь в юникоде



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 05 сентября 2008 16:18
· Личное сообщение · #4

переключи unicode в multibyte charset, в свойствах солюшена (если это msvs)




Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 05 сентября 2008 16:41 · Поправил: =TS=
· Личное сообщение · #5

Code:
  1. static wchar_t mystr[512] = L"Vbfg!";


(добавлено)
Упс, не так прочитал. Вариант выше -- если надо в юникоде при неюникодовском проекте

Если компилишь с батника или ком.строки -- юникод для компилятора включается параметрами ком.строки:

Code:
  1. /"_UNICODE" /"UNICODE"


-----
DREAMS CALL US




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 05 сентября 2008 17:52 · Поправил: theCollision
· Личное сообщение · #6

progopis
Не оно ? MS Visual Studio 2005 Team Studio

Code:
  1. // pragma_directive_data_seg.cpp
  2. int h = 1; // stored in .data
  3. int i = 0; // stored in .bss
  4. #pragma data_seg(".my_data1")
  5. int j = 1; // stored in "my_data1"
  6. #pragma data_seg(push, stack1, ".my_data2")   
  7. int l = 2; // stored in "my_data2"
  8. #pragma data_seg(pop, stack1)   // pop stack1 off the stack
  9. int m = 3; // stored in "stack_data1"
  10. int main() {
  11. }


-----
My love is very cool girl.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 сентября 2008 18:28
· Личное сообщение · #7

Ну что вы с таким вопросом то. Покайтесь... Неужто в гугле забанили =\ Или на форумах, посвящённых новичкам в С. Оставлю пока топик, но вообще следовало бы закрыть.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 06 сентября 2008 23:07
· Личное сообщение · #8

gcc, если чо. Страниц мана нет на тему C - не знаю даже у кого спросить - никто не знает имя пакета, при том что учусь я на ВМиК МГУ...
Тема закрыта.


 eXeL@B —› Программирование —› Создание строк в секции .data - язык C
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати