OpenCores
URL https://opencores.org/ocsvn/tinycpu/tinycpu/trunk

Subversion Repositories tinycpu

[/] [tinycpu/] [trunk/] [assembler/] [asm.rb] - Diff between revs 37 and 38

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 37 Rev 38
Line 16... Line 16...
      s
      s
    end
    end
  end
  end
end
end
 
 
 
class OpcodeByte2
 
  attr_accessor :cond, :reg2, :useextra, :reg3;
 
  def to_hex
 
    s=(cond << 8 | reg2.number << 5 | useextra << 4 | reg3.number).to_s(16);
 
    if s.length == 1
 
      "0"+s;
 
    elsif s.length==0
 
      "00";
 
    else
 
      s;
 
    end
 
  end
 
end
 
 
 
 
class Register8
class Register8
  attr_accessor :number
  attr_accessor :number
  def initialize(num)
  def initialize(num)
        @number=num
        @number=num
  end
  end
end
end
 
class OpcodeOption
 
  attr_accessor :number
 
  def initialize(num)
 
    @number=num;
 
  end
 
end
 
 
$iftr = 0; #0 for no condition, 1 for if TR, 2 for if not TR
$iftr = 0; #0 for no condition, 1 for if TR, 2 for if not TR
$useextra = 0;
$useextra = 0;
 
 
def mov_r8_imm8(reg,imm)
def mov_r8_imm8(reg,imm)
Line 52... Line 71...
    raise "if_tr_notset is not allowed with this opcode";
    raise "if_tr_notset is not allowed with this opcode";
  end
  end
  puts PREFIX + o.to_hex + imm.to_s(16) + SUFFIX;
  puts PREFIX + o.to_hex + imm.to_s(16) + SUFFIX;
  puts SEPERATOR;
  puts SEPERATOR;
end
end
 
def
 
 
 
 
def mov(arg1,arg2)
def mov(arg1,arg2)
  if arg1.kind_of? Register8 and arg2.kind_of? Integer and arg2<0x100 then
  if arg1.kind_of? Register8 and arg2.kind_of? Integer and arg2<0x100 then
    mov_r8_imm8 arg1,arg2
    mov_r8_imm8 arg1,arg2
Line 79... Line 99...
 
 
r0=Register8.new(0)
r0=Register8.new(0)
r1=Register8.new(1)
r1=Register8.new(1)
r2=Register8.new(2)
r2=Register8.new(2)
r3=Register8.new(3)
r3=Register8.new(3)
 
r4=Register8.new(4)
 
r5=Register8.new(5)
 
sp=Register8.new(6)
 
ip=Register8.new(7)
 
 
 
 
#test code follows. Only do it here for convenience.. real usage should prefix assembly files with `require "asm.rb"`
#test code follows. Only do it here for convenience.. real usage should prefix assembly files with `require "asm.rb"`
if_tr_set{
if_tr_set{
  mov r1,0x10
  mov r1,0x10
}
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.