| |
 | Posted by Talha Zekeriya Durmuş (zekeriyadurmus) in reply to Talha Zekeriya Durmuş (zekeriyadurmus) | Permalink Reply |
|
Talha Zekeriya Durmuş (zekeriyadurmus) 
| Ali hocam an itibariyle istediğimi gerçekleştirmiş bulunmaktayım...
Ama http://ddili.org/forum/post/9108 adresindeki GetProcAddress komutunu kullanarak compiled time işlevi tanımlamadan yapabilirim inşallah. Belki dll çağırmalarında asm boyutunda farklı kodlar çalışıyor ama eğer çalışmıyorsa şu anda doğrudan bu sisteme uygulayabilirim.
module main;
import std.stdio;
import core.memory;
void xx(int a, int b, string x){
writeln(x, a+b);
}
struct adata{
uint typ;
void* veri;
}
enum{
INT, STRING
}
int main(string[] argv){
int sayi1 = 40;
xx();
int sayi2 = 20;
string metin = "toplam = ";
adata[] dizi = [adata(INT, &sayi1), adata(INT, &sayi1), adata(STRING, &metin)];
foreach(d; dizi){
final switch(d.typ){
case INT:
int x = *cast(int*) d.veri;
asm{push x;}
case STRING:
string x = *cast(string*) d.veri;
auto l= x.length;
auto c = x.ptr;
asm{
push c;
push l;
}
break;
}
}
asm{
call xx;
}
while(1){}
return 0;
}
Zekeriya
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|