From e238e6521bcbbc3a4ff6d795564b8f2d322de349 Mon Sep 17 00:00:00 2001 From: "Pavlas, Zdenek" Date: Fri, 30 Sep 2016 07:29:38 -0700 Subject: gtst_addr(): short conditional jumps (i386, x86_64) --- i386-gen.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'i386-gen.c') diff --git a/i386-gen.c b/i386-gen.c index eace2df..79087d0 100644 --- a/i386-gen.c +++ b/i386-gen.c @@ -695,6 +695,19 @@ ST_FUNC void gjmp_addr(int a) } } +ST_FUNC void gtst_addr(int inv, int a) +{ + inv ^= (vtop--)->c.i; + a -= ind + 2; + if (a == (char)a) { + g(inv - 32); + g(a); + } else { + g(0x0f); + oad(inv - 16, a - 4); + } +} + /* generate a test. set 'inv' to invert test. Stack entry is popped */ ST_FUNC int gtst(int inv, int t) { -- cgit v1.3.1