From 5a2e1c953e7c53db93f21feec08ebc815351d703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Sun, 8 May 2016 18:43:51 +0200 Subject: [PATCH] cpu.x86.assember: add INC and DEC instructions to the assembler --- basis/cpu/x86/assembler/assembler-docs.factor | 14 +++++++++++++- basis/cpu/x86/assembler/assembler.factor | 6 ++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/basis/cpu/x86/assembler/assembler-docs.factor b/basis/cpu/x86/assembler/assembler-docs.factor index 6c1ecb5a57..8a6228655d 100644 --- a/basis/cpu/x86/assembler/assembler-docs.factor +++ b/basis/cpu/x86/assembler/assembler-docs.factor @@ -1,7 +1,19 @@ USING: compiler.codegen.labels cpu.x86.assembler.private help.markup -help.syntax ; +help.syntax sequences ; IN: cpu.x86.assembler +HELP: 1-operand +{ $values { "operand" "operand" } { "reg,rex.w,opcode" sequence } } +{ $description "Used for encoding some instructions with one operand." } ; + +HELP: DEC +{ $values { "dst" "register" } } +{ $description "Emits a DEC instruction." } ; + +HELP: INC +{ $values { "dst" "register" } } +{ $description "Emits an INC instruction." } ; + HELP: JE { $values { "dst" "destination address or " { $link label } } } { $description "Emits a conditional jump instruction to the given address relative to the current code offset." } diff --git a/basis/cpu/x86/assembler/assembler.factor b/basis/cpu/x86/assembler/assembler.factor index 643306013b..68f8707176 100644 --- a/basis/cpu/x86/assembler/assembler.factor +++ b/basis/cpu/x86/assembler/assembler.factor @@ -336,6 +336,12 @@ GENERIC: SUB ( dst src -- ) M: immediate SUB { 0b101 t 0x80 } immediate-1/4 ; M: operand SUB 0o050 2-operand ; +: INC ( dst -- ) + { 0b000 t 0xff } 1-operand ; + +: DEC ( dst -- ) + { 0b001 t 0xff } 1-operand ; + GENERIC: XOR ( dst src -- ) M: immediate XOR { 0b110 t 0x80 } immediate-1/4 ; M: operand XOR 0o060 2-operand ;