- fixed jasm to use with ruby > v1.9
git-svn-id: http://moon:8086/svn/vhdl/trunk@1392 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
+14
-14
@@ -33,7 +33,7 @@ XROM_MAX_SIZE = 256
|
|||||||
XROM_DATA_TYPE = "dmem_data_t"
|
XROM_DATA_TYPE = "dmem_data_t"
|
||||||
XROM_ADDR_TYPE = "dmem_addr_t"
|
XROM_ADDR_TYPE = "dmem_addr_t"
|
||||||
XROM_ENTITY_NAME = "xrom"
|
XROM_ENTITY_NAME = "xrom"
|
||||||
OPC_LIST_NAME = "/cygdrive/w/vhdl/lib/CPUs/JCpu/tools/opc.list"
|
OPC_LIST_NAME = "opc.list"
|
||||||
|
|
||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
class Parser
|
class Parser
|
||||||
@@ -179,6 +179,7 @@ file.each do |raw_line|
|
|||||||
end
|
end
|
||||||
|
|
||||||
token = iline_member[mc]
|
token = iline_member[mc]
|
||||||
|
mcnt = iline_member.count{|x| !x.nil?}
|
||||||
if token
|
if token
|
||||||
token = token.upcase
|
token = token.upcase
|
||||||
end
|
end
|
||||||
@@ -209,7 +210,7 @@ file.each do |raw_line|
|
|||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
if 0 == (iline_member[mc+1] =~ /\d+/)
|
if 0 == (iline_member[mc+1] =~ /\d+/)
|
||||||
curr_addr = format("0x%2.2X",eval(iline_member[mc+1..iline_member.nitems].to_s))
|
curr_addr = format("0x%2.2X",eval(iline_member[mc+1..mcnt][0].to_s))
|
||||||
else
|
else
|
||||||
curr_addr = iline_member[mc+1]
|
curr_addr = iline_member[mc+1]
|
||||||
end
|
end
|
||||||
@@ -218,7 +219,7 @@ file.each do |raw_line|
|
|||||||
STDERR.puts format("Error in line %d: %s needs argument!", lc, token)
|
STDERR.puts format("Error in line %d: %s needs argument!", lc, token)
|
||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
offset = eval(iline_member[mc+1..iline_member.nitems].to_s)
|
offset = eval(iline_member[mc+1..mcnt][0].to_s)
|
||||||
case obj.curr_segment
|
case obj.curr_segment
|
||||||
when "CODE"
|
when "CODE"
|
||||||
obj.pc = offset
|
obj.pc = offset
|
||||||
@@ -261,11 +262,10 @@ file.each do |raw_line|
|
|||||||
str = item.delete("\"")
|
str = item.delete("\"")
|
||||||
puts item
|
puts item
|
||||||
for nn in (0..str.length-1)
|
for nn in (0..str.length-1)
|
||||||
if str[nn] > 31
|
value = str[nn].to_i(16)
|
||||||
obj.put_xmem(str[nn], lc);
|
obj.put_xmem(value, lc);
|
||||||
puts "S: " + str[nn].to_s
|
puts "S: " + value.to_s
|
||||||
len += 1
|
len += 1
|
||||||
end
|
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
argument = item
|
argument = item
|
||||||
@@ -307,7 +307,7 @@ file.each do |raw_line|
|
|||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
|
|
||||||
op_line = iline_member[mc+1..iline_member.nitems].to_s
|
op_line = iline_member[mc+1..mcnt][0].to_s
|
||||||
curr_addr = format("0x%3.3X",obj.pc)
|
curr_addr = format("0x%3.3X",obj.pc)
|
||||||
opc = token
|
opc = token
|
||||||
if iline_member[mc+1] != nil
|
if iline_member[mc+1] != nil
|
||||||
@@ -383,7 +383,7 @@ end
|
|||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
# Open file
|
# Open file
|
||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
filename = arg.to_s
|
filename = arg[0].to_s
|
||||||
if !File.exists?(filename)
|
if !File.exists?(filename)
|
||||||
STDERR.puts "#{filename} does not exist"
|
STDERR.puts "#{filename} does not exist"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -743,10 +743,10 @@ if num_errors == 0
|
|||||||
file.puts format("\tconstant xmem_rom : xmem_rom_t :=\n")
|
file.puts format("\tconstant xmem_rom : xmem_rom_t :=\n")
|
||||||
file.puts format("\t(\n");
|
file.puts format("\t(\n");
|
||||||
for i in (0..XROM_MAX_SIZE-2)
|
for i in (0..XROM_MAX_SIZE-2)
|
||||||
file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i], i)
|
file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
|
||||||
end;
|
end;
|
||||||
i = XROM_MAX_SIZE-1
|
i = XROM_MAX_SIZE-1
|
||||||
file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i], i)
|
file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
|
||||||
file.puts format("\t);\n")
|
file.puts format("\t);\n")
|
||||||
file.puts format("\n")
|
file.puts format("\n")
|
||||||
file.puts format("begin")
|
file.puts format("begin")
|
||||||
@@ -772,10 +772,10 @@ if num_errors == 0
|
|||||||
file.puts format("\tsignal xmem_rom : xmem_rom_t :=\n")
|
file.puts format("\tsignal xmem_rom : xmem_rom_t :=\n")
|
||||||
file.puts format("\t(\n");
|
file.puts format("\t(\n");
|
||||||
for i in (0..XROM_MAX_SIZE-2)
|
for i in (0..XROM_MAX_SIZE-2)
|
||||||
file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i], i)
|
file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
|
||||||
end;
|
end;
|
||||||
i = XROM_MAX_SIZE-1
|
i = XROM_MAX_SIZE-1
|
||||||
file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i], i)
|
file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
|
||||||
file.puts format("\t);\n")
|
file.puts format("\t);\n")
|
||||||
puts format("X-ROM (loadable) file written to \"%s\"\n",filename)
|
puts format("X-ROM (loadable) file written to \"%s\"\n",filename)
|
||||||
file.close
|
file.close
|
||||||
|
|||||||
Reference in New Issue
Block a user