This is the mail archive of the cgen@sourceware.org mailing list for the CGEN project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Thanks in advance Ronald
; Simple 8 Bit Processor -*- Scheme -*-
(include "simplify.inc")
; FIXME: Delete sign extension of accumulator results.
; Sign extension is done when accumulator is read.
; define-arch must appear first
(define-arch
(name proc) ; name of cpu family
(comment "8 Bit Processor")
(insn-lsb0? #f)
(machs proc)
(isas proc)
)
(define-isa
(name proc)
(default-insn-bitsize 8)
(base-insn-bitsize 8)
(default-insn-word-bitsize 8)
)
(define-cpu
(name proc)
(comment "8 Bit Processor Family")
(endian big)
(word-bitsize 8)
)
(define-mach
(name proc)
(comment "8 Bit FPGA Processor")
(cpu proc)
)
(define-model
(name proc)
(comment "8 Bit Processor Model")
(attrs)
(mach proc)
(unit u-exec "Execution Unit" () 1 1
() () () ())
)
(dnf f-op "op" () 0 8)
(dnf f-uimm8 "unsigned 8 bit immediate" () 8 8)
(dnf f-uimm16 "unsigned 16 bit immediate" () 8 16)
(define-normal-insn-enum
insn-op "insn format enums" () OP_ f-op
(.map .str (.iota 256))
)
(dnh h-pc "program counter" (PC PROFILE) (pc) () () ())
(define-hardware
(name h-accu)
(comment "Accumulator")
(attrs PROFILE );CACHE-ADDR)
(type register DI )
)
(define-attr
(for operand)
(type boolean)
(name HASH-PREFIX)
(comment "immediates have an optional '#' prefix")
)
(dnop accu "accumulator" () h-accu f-nil)
(dnop uimm8 "unsigned 8 bit immediate" () h-uint f-uimm8)
(dnop uimm16 "unsigned 16 bit immediate" () h-uint f-uimm16)
(dni nop "nop"
()
"nop"
(+ OP_0)
(nop)
()
)
(dni lda "lda"
()
"lda $uimm16"
(+ OP_1 uimm16)
(set accu (mem WI uimm16))
()
)
(dni ldc "ldc"
()
"ldc $uimm8"
(+ OP_2 uimm8)
(set accu uimm8)
()
)
(dni decx "decx"
()
"decx"
(+ OP_100)
(nop)
()
)
(dni decy "decy"
()
"decy"
(+ OP_101)
(nop)
()
)
#as: #objdump: -dr #name: allinsn *: +file format .* Disassembly of section \.text: 00000000 <nop>: \.\.\. 00000001 <lda>: 1: 01 00 -> lda 0x100 3: 00 01 -> nop 5: ff ff || \*unknown\* 7: 01 80 -> lda 0xffff 9: 00 01 -> nop b: 7f ff -> \*unknown\* d: 01 00 -> lda 0x100 f: 01 01 -> lda 0x100 11: c5 bd || \*unknown\* 13: 01 fa -> lda 0xc5bd 15: 6d 01 -> \*unknown\* 17: 5e 51 -> \*unknown\* 00000019 <ldc>: 19: 02 00 -> ldc 0x2 1b: 02 ff -> ldc 0x2 1d: 02 80 -> ldc 0x2 1f: 02 7f -> ldc 0x2 21: 02 01 -> ldc 0x2 23: 02 f7 -> ldc 0x2 25: 02 54 -> ldc 0x2 27: 02 ea -> ldc 0x2 00000029 <decx>: 29: 64 65 -> decx 0000002a <decy>: 2a: 65 00 -> decy
.data foodata: .word 42 .text footext: .text .global nop nop: nop .text .global lda lda: lda 0 lda 65535 lda 32768 lda 32767 lda 1 lda 50621 lda 64109 lda 24145 .text .global ldc ldc: ldc 0 ldc 255 ldc 128 ldc 127 ldc 1 ldc 247 ldc 84 ldc 234 .text .global decx decx: decx .text .global decy decy: decy
Attachment:
a.out
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |