Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2012, 19:34   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию Регистры и потоки

Добрый день. Что-то я в гугл ничего не найду на эту тему, видно цензура интернета уже заработала. У меня в программе есть потоки, которые используют регистры. Я хочу узнать. Регистры у них общие или независимые друг от друга. Просто у меня в потоке был цикл loop и после двух кругов ecx имеет немыслимые значения. Внутри используются WIN API, но значение заталкивается и выталкивается из стека. Т.е. АПИ тут не при чем.
Код:
proc    SendAll,msg:dword
        mov     ecx,5

@lp:
        push    ecx
        sub     [i],1
        invoke  wsprintf,geterror,'%d',ecx
        invoke  MessageBox,0,geterror,Caption,0
        pop      ecx
        loop     @lp  

        ret
        endp
Напомню, что приоритет - это ответ на вопрос: у потоков регистры общие или нет?
Заранее благодарю.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 30.07.2012, 20:11   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Здесь скорее проблема с вызовом wsprintf. Если мне не изменяет память, он определён как имеющий сишное соглашение вызова (cdecl), ввиду чего для вызова необходимо использовать cinvoke, а не invoke, иначе после вызова стек не будет очищен (не говоря уже о порядке следования параметров) и в ecx попадёт какой-нибудь мусорок.

Сами по себе регистры общие, но для каждого потока их значение сохраняется операционной системой, то есть программно у каждого потока уникальные регистры.
netrino вне форума Ответить с цитированием
Старый 30.07.2012, 21:44   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Спасибо за консультацию. Всего вам хорошего.
--
Цитата:
Сами по себе регистры общие, но для каждого потока их значение сохраняется операционной системой, то есть программно у каждого потока уникальные регистры.
Ради общего интереса. А куда они сохраняются? В оперативную память?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 31.07.2012 в 10:45.
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регистры Волк Microsoft Office Excel 9 08.04.2009 16:07
Регистры Манжосов Денис :) Помощь студентам 8 28.07.2008 12:48
Регистры RealSHELS Общие вопросы Delphi 3 28.03.2008 18:56
Регистры Elm0 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 10.02.2008 19:49