Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для выравнивания начала куска кода на 4, 8, 16 байтовые границы.
Выполняется быстрее чем nop; mov edi, edi; lea ecx, [ecx+0]; lea esp, [esp+0]; add eax, 0; итд.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 13:44 15-06-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
но тогда самому придется считать байты. а align тут не пойдет?
 
Добавлено:
всосал - алайн впихивает простые нопы

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:56 15-06-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, есть ли виртуальные машины(ПО), к-е виртуализуют хардварную отладку, DEBUGCTL, и так далее. VmWare вроде не умеет.

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 08:03 07-07-2014
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://ru.wikipedia.org/wiki/Bochs
Может быть это?

Всего записей: 1479 | Зарегистр. 24-03-2009 | Отправлено: 11:32 07-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
http://ru.wikipedia.org/wiki/Bochs
Может быть это?

вряд ли. Это вообще софтовая виртуализация, кажется. Такие глубины ему, казалось бы ни к чему.Однако судя по вики он даже бряки на память не умеет(только на выполнение).
На SO агитируют KVM, но под линуксом. Нах.
 
Добавлено:
Кстати, а отладочные регистры специфичны для потока, или глобальны?
Если я установлю скажем, DR1 в контексте потока 1, то будет ли потом он тем же в контексте потока 2?

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 15:56 07-07-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlekXL, CRx/DRx/TRx, насколько я помню, глобальны...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 12:03 08-07-2014 | Исправлено: MERCURY127, 12:03 08-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
конечно "глобальны". и после их изменения в защищенном режиме не будут работать все потоки

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 10:28 09-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
конечно "глобальны". и после их изменения в защищенном режиме не будут работать все потоки

Что значит: не будут работать? Что значит: все потоки? Во всей системе что ли? lol

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 03:44 11-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
причем тут система если молотком по процессору стукнуть

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 09:18 11-07-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что значит: не будут работать? Что значит: все потоки? Во всей системе что ли? lol

регистры CRx/DRx/TRx/MSR являются такими же глобальными, как и все прочие регистры процессора (или ядра, если проц многоядерный). просто они не переключаются при смене контекста, тк являются управляющими регистрами всего процессора, и их назначение мало документировано. это значит, что изменение этих регистров (если оно вообще удаться, тк нужен доступ в нулевое кольцо) приведет к изменению работы всего процессора, безотносительно контекстов и прочей многопоточной белиберды, например, переключит режим трансляции страниц. если это сделать неаккуратно, без предварительной подготовки всего и вся, включая всевозможные устройства, то процессор просто моментально выдаст кучу ошибок и резетнётся. но если вы четко знаете, что делаете, какие биты и в каком порядке менять, то конечно, вперед

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 11:33 11-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
почему мало документировано? сейчас ссылку поищу где объясняется как систему написать 32 битную и значение всех регистров объясняется

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:28 11-07-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
этих систем игрушечных любителями опупенсорса понаписано несчетное количество... из них только одна вышла в мейнстрим... и то только потому, что маркетинговые отделы крупных корпораций увидели возможность сэкономить на математике еще больше, чем на винде в сравнении с изначально монопольной UNIX...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 12:42 11-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
там нечего описывать в великом множестве. все действия строго очерчены железом процессора.
 
Добавлено:
http://sasm.narod.ru/docs/pm/pm_in/main.htm

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:49 11-07-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
все действия строго очерчены железом процессора.
производители матерщинных плат и периферии смотрят на вас с недоумением...
 
а статья хороша! жаль только, каждая страница заканчивается "зависнет/зависнет/зависнет"... может быть, потому что забыли написать обработчики прерываний? ну там, контроллеры всякие никчемные...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 13:39 11-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
статья отличная. на практике все понятнее. жалко он ее не дописывает.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:12 11-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
 

Цитата:
просто они не переключаются при смене контекста, тк являются управляющими регистрами всего процессора, и их назначение мало документировано

 
отладочные регистры включены в структуру-контекст потока. Они видны в Ring3.  
Их можно установить в Ring3, посредством SetThreadContext
 
 
Спрошу  еще раз, и прошу, лишь бы что не говорите: действительно ли они глобальны, или Win меняет их при переключении? Потому что, насколько я знаю, отладочные регистры уникальны в контексте процесса(но не потока).

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 05:28 12-07-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В контексте потока они уникальны, в другом потоке их значения могут быть уже другими.
Это видно в примере Подробнее....

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 13:38 12-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В контексте потока они уникальны, в другом потоке их значения могут быть уже другими.
Это видно в примере Подробнее....
 

да, похоже. [у меня в студии 2013 почему-то после модификации асма корректно не перекомпилится, приходится Rebuild вызывать]
 
А из этого контекста как-то можно выцепить lastBranchFromIP? В 64-разрядном случае все просто, но вот в случае WOW...
--
А вообще как в масме объявить external на С функцию с сигнатурой
void* __stdcall myfn(int my, char* mys);
??
то есть для связывания статического?

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 17:15 12-07-2014 | Исправлено: AlekXL, 11:21 13-07-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
.686
.model flat,stdcall
option casemap:none
includelib someCLib.lib ;void* __stdcall myfn(int my, char* mys); is here
 
myfn PROTO :DWORD, :DWORD
 
.code
start:
    invoke myfn, 5, ADDR start
    ret
END start

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:25 13-07-2014 | Исправлено: ne_viens, 16:25 13-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, примерно так я и понял:

Код:
 
myfn PROTO STDCALL :DWORD, :DWORD
 

хотя я асм подликовывал к сям в студии, а не наоборот, как у вас.
 
---
еще вопросик: как узнать смещение CS селектора(23) в линейном адресном пространсве [под W7x64]?  
 
Это я для того, чтобы интерпретировать LastBranchFromIp, LastIntFromIP? Я пытаюсь прочитать их в обработчике(как раз из кода ne_viens) посредством WinRing0
 
   
 
может, просто не на то ядро вешаю..

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 23:12 13-07-2014 | Исправлено: AlekXL, 23:17 13-07-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru