Introducing the yasep architecture
This commit is contained in:
parent
9e9030f8df
commit
fa4614af23
2
Makefile
2
Makefile
@ -61,6 +61,7 @@ dist:
|
|||||||
$(PACKAGE)-$(VERSION)/src/arch/mips.c \
|
$(PACKAGE)-$(VERSION)/src/arch/mips.c \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/sparc.c \
|
$(PACKAGE)-$(VERSION)/src/arch/sparc.c \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/sparc64.c \
|
$(PACKAGE)-$(VERSION)/src/arch/sparc64.c \
|
||||||
|
$(PACKAGE)-$(VERSION)/src/arch/yasep.c \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/Makefile \
|
$(PACKAGE)-$(VERSION)/src/arch/Makefile \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/amd64.ins \
|
$(PACKAGE)-$(VERSION)/src/arch/amd64.ins \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/amd64.reg \
|
$(PACKAGE)-$(VERSION)/src/arch/amd64.reg \
|
||||||
@ -84,6 +85,7 @@ dist:
|
|||||||
$(PACKAGE)-$(VERSION)/src/arch/sparc.h \
|
$(PACKAGE)-$(VERSION)/src/arch/sparc.h \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/sparc.ins \
|
$(PACKAGE)-$(VERSION)/src/arch/sparc.ins \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/sparc.reg \
|
$(PACKAGE)-$(VERSION)/src/arch/sparc.reg \
|
||||||
|
$(PACKAGE)-$(VERSION)/src/arch/yasep.ins \
|
||||||
$(PACKAGE)-$(VERSION)/src/arch/project.conf \
|
$(PACKAGE)-$(VERSION)/src/arch/project.conf \
|
||||||
$(PACKAGE)-$(VERSION)/src/format/dex.c \
|
$(PACKAGE)-$(VERSION)/src/format/dex.c \
|
||||||
$(PACKAGE)-$(VERSION)/src/format/elf.c \
|
$(PACKAGE)-$(VERSION)/src/format/elf.c \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
TARGETS = amd64.so arm.so dalvik.so i386.so i386_real.so i486.so i586.so i686.so java.so mips.so sparc.so sparc64.so
|
TARGETS = amd64.so arm.so dalvik.so i386.so i386_real.so i486.so i586.so i686.so java.so mips.so sparc.so sparc64.so yasep.so
|
||||||
PREFIX = /usr/local
|
PREFIX = /usr/local
|
||||||
DESTDIR =
|
DESTDIR =
|
||||||
LIBDIR = $(PREFIX)/lib
|
LIBDIR = $(PREFIX)/lib
|
||||||
@ -102,6 +102,13 @@ sparc64_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
|
|||||||
sparc64.so: $(sparc64_OBJS)
|
sparc64.so: $(sparc64_OBJS)
|
||||||
$(CCSHARED) -o sparc64.so $(sparc64_OBJS) $(sparc64_LDFLAGS)
|
$(CCSHARED) -o sparc64.so $(sparc64_OBJS) $(sparc64_LDFLAGS)
|
||||||
|
|
||||||
|
yasep_OBJS = yasep.o
|
||||||
|
yasep_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
||||||
|
yasep_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
|
||||||
|
|
||||||
|
yasep.so: $(yasep_OBJS)
|
||||||
|
$(CCSHARED) -o yasep.so $(yasep_OBJS) $(yasep_LDFLAGS)
|
||||||
|
|
||||||
amd64.o: amd64.c amd64.ins amd64.reg common.ins null.ins i386.h i386.ins i386.reg i486.ins i686.ins i686.reg
|
amd64.o: amd64.c amd64.ins amd64.reg common.ins null.ins i386.h i386.ins i386.reg i486.ins i686.ins i686.reg
|
||||||
$(CC) $(amd64_CFLAGS) -c amd64.c
|
$(CC) $(amd64_CFLAGS) -c amd64.c
|
||||||
|
|
||||||
@ -138,8 +145,11 @@ sparc.o: sparc.c common.ins null.ins sparc.h sparc.ins sparc.reg
|
|||||||
sparc64.o: sparc64.c common.ins null.ins sparc.h sparc.ins sparc.reg
|
sparc64.o: sparc64.c common.ins null.ins sparc.h sparc.ins sparc.reg
|
||||||
$(CC) $(sparc64_CFLAGS) -c sparc64.c
|
$(CC) $(sparc64_CFLAGS) -c sparc64.c
|
||||||
|
|
||||||
|
yasep.o: yasep.c common.ins null.ins yasep.ins
|
||||||
|
$(CC) $(yasep_CFLAGS) -c yasep.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -- $(amd64_OBJS) $(arm_OBJS) $(dalvik_OBJS) $(i386_OBJS) $(i386_real_OBJS) $(i486_OBJS) $(i586_OBJS) $(i686_OBJS) $(java_OBJS) $(mips_OBJS) $(sparc_OBJS) $(sparc64_OBJS)
|
$(RM) -- $(amd64_OBJS) $(arm_OBJS) $(dalvik_OBJS) $(i386_OBJS) $(i386_real_OBJS) $(i486_OBJS) $(i586_OBJS) $(i686_OBJS) $(java_OBJS) $(mips_OBJS) $(sparc_OBJS) $(sparc64_OBJS) $(yasep_OBJS)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
$(RM) -- $(TARGETS)
|
$(RM) -- $(TARGETS)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
targets=amd64,arm,dalvik,i386,i386_real,i486,i586,i686,java,mips,sparc,sparc64
|
targets=amd64,arm,dalvik,i386,i386_real,i486,i586,i686,java,mips,sparc,sparc64,yasep
|
||||||
cppflags_force=-I ../../include
|
cppflags_force=-I ../../include
|
||||||
cflags_force=-W `pkg-config --cflags libSystem`
|
cflags_force=-W `pkg-config --cflags libSystem`
|
||||||
cflags=-Wall -g -O2 -fPIC -pedantic
|
cflags=-Wall -g -O2 -fPIC -pedantic
|
||||||
dist=Makefile,amd64.ins,amd64.reg,arm.h,arm.ins,arm.reg,common.ins,dalvik.ins,dalvik.reg,i386.h,i386.ins,i386.reg,i486.ins,i586.ins,i686.ins,i686.reg,mips.h,mips.ins,mips.reg,null.ins,sparc.h,sparc.ins,sparc.reg
|
dist=Makefile,amd64.ins,amd64.reg,arm.h,arm.ins,arm.reg,common.ins,dalvik.ins,dalvik.reg,i386.h,i386.ins,i386.reg,i486.ins,i586.ins,i686.ins,i686.reg,mips.h,mips.ins,mips.reg,null.ins,sparc.h,sparc.ins,sparc.reg,yasep.ins
|
||||||
|
|
||||||
[amd64]
|
[amd64]
|
||||||
type=plugin
|
type=plugin
|
||||||
@ -99,3 +99,10 @@ install=$(LIBDIR)/asm/arch
|
|||||||
|
|
||||||
[sparc64.c]
|
[sparc64.c]
|
||||||
depends=common.ins,null.ins,sparc.h,sparc.ins,sparc.reg
|
depends=common.ins,null.ins,sparc.h,sparc.ins,sparc.reg
|
||||||
|
|
||||||
|
[yasep]
|
||||||
|
type=plugin
|
||||||
|
sources=yasep.c
|
||||||
|
|
||||||
|
[yasep.c]
|
||||||
|
depends=common.ins,null.ins,yasep.ins
|
||||||
|
50
src/arch/yasep.c
Normal file
50
src/arch/yasep.c
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
/* Copyright (c) 2011 Pierre Pronchery <khorben@defora.org> */
|
||||||
|
/* This file is part of DeforaOS Devel asm */
|
||||||
|
/* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include "Asm.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* yasep */
|
||||||
|
/* private */
|
||||||
|
/* variables */
|
||||||
|
static ArchInstruction _yasep_instructions[] =
|
||||||
|
{
|
||||||
|
#include "yasep.ins"
|
||||||
|
#include "common.ins"
|
||||||
|
#include "null.ins"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* functions */
|
||||||
|
/* plug-in */
|
||||||
|
|
||||||
|
|
||||||
|
/* protected */
|
||||||
|
/* variables */
|
||||||
|
ArchPlugin arch_plugin =
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
"yasep",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
_yasep_instructions,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
40
src/arch/yasep.ins
Normal file
40
src/arch/yasep.ins
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
/* Copyright (c) 2011 Pierre Pronchery <khorben@defora.org> */
|
||||||
|
/* This file is part of DeforaOS Devel asm */
|
||||||
|
/* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* generic */
|
||||||
|
/* opcode */
|
||||||
|
#define OPIR(opcode) (opcode << 2)
|
||||||
|
#define OPRR(opcode) ((opcode << 2) | 0x2)
|
||||||
|
#define OPIRL(opcode) ((opcode << 2) | 0x1)
|
||||||
|
#define OPRRL(opcode) ((opcode << 2) | 0x3)
|
||||||
|
/* flags */
|
||||||
|
#define OPIRF (16 << AOD_SIZE)
|
||||||
|
#define OPRRF (16 << AOD_SIZE)
|
||||||
|
#define OPIRLF (32 << AOD_SIZE)
|
||||||
|
#define OPRRLF (32 << AOD_SIZE)
|
||||||
|
/* operands */
|
||||||
|
#define OP_DST3 AO_REGISTER(0, 32, 0)
|
||||||
|
#define OP_IMM4 AO_IMMEDIATE(0, 4, 0)
|
||||||
|
#define OP_IMM16 AO_IMMEDIATE(0, 16, 0)
|
||||||
|
#define OP_SI4 AO_REGISTER(0, 32, 0)
|
||||||
|
#define OP_SND AO_REGISTER(0, 32, 0)
|
||||||
|
|
||||||
|
/* instructions */
|
||||||
|
{ "add", OPIR(0x0c), OPIRF, AO_2(OP_IMM4, OP_SND) },
|
||||||
|
{ "add", OPRR(0x0c), OPRRF, AO_2(OP_SI4, OP_SND) },
|
||||||
|
{ "add", OPIRL(0x0c),OPIRLF, AO_2(OP_SI4, OP_IMM16) },
|
||||||
|
{ "add", OPRRL(0x0c),OPRRLF, AO_3(OP_SND, OP_SI4, OP_DST3) },
|
Loading…
Reference in New Issue
Block a user