регистры
Как узнать/установить занчения регистров (AX,BX,CX,SP,BP,SI,DS,ES,IP)?
А asm...end; подойдет?
А asm...end; подойдет?
Конечно!!!!!!!!!
Я писал на asm но ничего не получается - не силен я в ассемблере
wAX: WORD;
begin
asm
MOV wAX, AX
end;
end;
остальные регистры аналогично... если хочешь использовать расширенные регистры (eax, ebx.. и т.д.), то в VAR тип надо поменять на DWORD...
Как узнать/установить занчения регистров (AX,BX,CX,SP,BP,SI,DS,ES,IP)?
Зачем?? Эти регистры позволяют работать вообще всей системе и они меняются после каждого такта процессора. После того как ты их поменяешь, я тебе даю стопроцентную гарантию, что они собъются сразу как будет вызвана любая ф-ция или любая другая операция. Да они вообще собъются сразу после закрытия асемблерной вставки.
Прочитать можешь, только поверь смысла в этом мало, если не умеешь работать с ассемблером. Их полезно знать когда продолжаешь работать с асемлерной вставкой. Смотря в каком месте вызовешь асемблерную вставку разные будут значения регистров.
Хотя если поменять служебные регистры, (те которые отвечают за адрес следующей команды), я не уверен(работает ли это на языках высоко уровня) но можно поменять ход выполенния программы. Только оно не нужно, когда есть goto.
Хех помню я баловался ассемблером только так.... Такие вещи вытворял, но правда только в ДОСЕ.
Кстати а вот и вопрос который меня интересовал.
Я так понимаю винда не позволяет менять реальные значение регистров, вместо них должно быть меняются виртуальные регистры. и винда каждому процессу или потоку выделяет свои виртуальные регистры?
Кстати а вот и вопрос который меня интересовал.
Я так понимаю винда не позволяет менять реальные значение регистров, вместо них должно быть меняются виртуальные регистры. и винда каждому процессу или потоку выделяет свои виртуальные регистры?
пиши вопрос в асю 238098569.... он гуру в таких вопросах
Зачем?? Эти регистры позволяют работать вообще всей системе и они меняются после каждого такта процессора.
Мне только надо узнать есть ли там опред данные и без разници что сними будет потом
Мне только надо узнать есть ли там опред данные и без разници что сними будет потом
Их там нет.
Я так понимаю винда не позволяет менять реальные значение регистров, вместо них должно быть меняются виртуальные регистры. и винда каждому процессу или потоку выделяет свои виртуальные регистры?
Не совсем верно... На самом деле никаких виртуальных регистров не существует, при выполнении процесса используются реальные регистры процессора. Просто при переключении процессором задачи, создается т.н. контекст, в который сохраняются все значения регистров, а при обратном преключении - восстанавливаются. Виртуальные регистры существуют только для ДОС - приложений (фактически ДОС в винде реализован как VM).
Ну это уже, простите, бред полный... В исходниках VCL полно функций, реализованых с помощью asm-вставок, и ничего, все прекрасно работает... Просто действительно надо знать, что делаешь.
Ну это уже, простите, бред полный... В исходниках VCL полно функций, реализованых с помощью asm-вставок, и ничего, все прекрасно работает... Просто действительно надо знать, что делаешь.
Дык где ты увидел бред в моих словах? Я соглсен что асмовские вставки рулят.
Если не правильно понел о чем я пишу, не мои проблемы. Я имел ввиду, что просто поменять значение регистра, и чтобы оно там осталось не получиться. Читай подробней что я пишу и харе выёживаться.
Было ясно сказано что смысла поменять их нет. А вот поменять и поработать с этим вполне можно и даже ОЧЕНЬ ДАЖЕ НУЖНО, для создания минимального размера кода.
ОЧЕНЬ ДАЖЕ НУЖНО, для создания минимального размера кода.
и ускорения работы приложения....
вот только смысла в этом в некоторых случаях нет... очень много API написано на асм... так что не нужно переписывать всякие там GetRValue или RGB....:}