Skocz do zawartości

[Delphi]Wykonywanie kodu stworzonego ad hoc


Force

Polecane posty

Pytanie jest teoretyczne, na razie nie chce tego zrobić, ale w tym roku mam zamiar, a może ktoś to zrobił już, otóż do rzeczy. chce zrobić tak, że pod Pointerem alokuje sobie np. 100 bajtów, w te bajty coś tam wrzucam, a teraz najlepsze- czy istnieje jakaś możliwość/metoda aby w czasie działania programu program kazał wykonać to co jest pod tym wskaźnikiem, a potem wrócił do miejsca gdzie kazałem mu wykonać to z pod pointera i robił dalsze linijki? Chce to uzyć bo mam w planie zrobić parser wyrażeń matematycznych i podane wyrażenie będzie wykonywane np. tysiące razy to zamiast wykonywać działanie z ONP chciałbym móc zaminić to na kod maszynowy wrzucić na wskaźnik i wykonywać tysiące razy. Czyli taka mała java :D

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Ja mam pomysł, że robię takie jako asm.. end : call metodę wskaźnik do metody i tyle, a to co pod tym wskaźnikiem kończy się zawsze na ret, ale nie chce tracić czasu jak ktoś to kiedyś wymyślił bo ja to nie teraz bym zaczął to nie śpieszno mi do testowania.

 

Edit:

I źle zrozumiałeś, nie robię w javie, a w Delphi, chodzi mi tylko, że część kodu tworzę podczas działania programu i go wykonuje, jak w javie

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

a lyzka na to niemozliwe :)

 

ale ja wiem o co ci chodzi bo kiedys tez mi takie cos po glowie chodzilo.

 

tylko jak zrobisz malloc to chyba nie mozna tam zrobic jmp

a jak zrobisz procedure jako asm to moze da rade nie probowalem, kwestja miec odpowiednia ilosc miejsca do zmian :D

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Nudzilo mi sie wiec sprawdzilem :) i wszystko pieknie dziala.

 

 

 


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var a : array of byte;
  b : byte;
begin
SetLength(a, 3);
a[0] := 64;
a[1] := 195;
b := 5;
asm
push ax;
mov al, b;
call a;
mov b, al;
pop ax;
end;
writeln('end ', b);
readln;
SetLength(a, 0);
end.




Link do komentarza
Udostępnij na innych stronach

na moim blogu focuscore.dathox.com (kliknij) masz IA32 DB z pełną listą opcodów IA32 i bazą danych pod wygenerowanie np. Assemblera JIT. Może się przydać :)

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

pod znakami zapytania masz instrukcje do tych oznaczeń ;)

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...