Universal eXecutable Protocol
これは何?
- uxfでプログラムを書いていると、デバッグのためにprintfなどを使いたくなることがある。しかしuxfはダイナミックリンクを考慮していないので、基本的にそういうことはできない。
- そもそもuxfでは入出力は一切しないで、メモリ上で簡単な処理を高速に実行することだけを想定している。
- uxfにダイナミックリンクの機構を入れようかとも思ったけど、デバッグのためにそこまでやるのもどうかと思い、以下の代用方法を考えた。
書き方
void (*uxp)(void *uxph, const void **);
int (*upx_printf)(const char *fmt, ...);
void *cmds[] = {
(void *) 0x0010, &upx_printf, "printf", NULL,
(void *) 0x0000
};
void entry(char *bytes, int size, void *uxpp, void *uxph)
{
uxp = uxpp;
uxp(uxph, cmds);
uxp_printf("hello!\n");
}
こめんと欄
- 結局、uxfにexternリンクの仕様を入れることにしたので、このアイデアは没の方向で。 -- K 2016-09-24 (土) 15:25:13