Module:Instruction set table builder: Difference between revisions

Reduced font size for instruction table to shrink table width
No edit summary
(Reduced font size for instruction table to shrink table width)
 
(15 intermediate revisions by the same user not shown)
Line 1:
local getArgs = require('Module:Arguments').getArgs
local p = {}
 
function string.split(str, len)
local output = {};
for match in str:gmatch("."..string.rep(".?", len - 1)) do
if(#match > 0) then
table.insert(output, match);
end
end
return output;
end
 
function string.addSpacing(str, len)
local tab = string.split(str, len)
local output = ""
for i = 1, #tab, 1 do
output = output .. tab[i] .. " "
end
return output
end
 
function formatMnemonic(str)
str = str .. " "
str = str:gsub("rd ", "r<sub>d</sub> ")
str = str:gsub("rd,", "r<sub>d</sub>,")
str = str:gsub("rs", "r<sub>s</sub>")
str = str:gsub("rt", "r<sub>t</sub>")
str = str:gsub("r'd", "rd")
str = str:gsub("r't", "rt")
str = str:gsub("r's", "rs")
return str
end
 
function formatDescription(str)
str = formatMnemonic(str)
str = str:gsub("immediate", "\'\'immediate\'\'")
str = str:gsub("sa", "\'\'sa\'\'")
str = str:gsub("offset", "\'\'offset\'\'")
str = str:gsub("target", "\'\'target\'\'")
str = str:gsub("LO", "\'\'LO\'\'")
str = str:gsub("HI", "\'\'HI\'\'")
return str
end
 
function p.notation( frame )
Line 13 ⟶ 60:
for i = 1, #arr, 2 do
s = s .. "|-\n"
s = s .. "| " .. arr[i] .. " || style=\"text-align: left;\"| " .. arr[i + 1] .. " || " .. arr[i + 2] .. "\n"
end
Line 23 ⟶ 70:
function p.set( frame )
local args = getArgs(frame)
local s = "{| class=\"wikitable\" style=\"text-align: center; font-size: 85%;\"\n! Mnemonic !! Description !! 32-bit Instruction Word\n"
local arr = {}
Line 30 ⟶ 77:
end
for i = 1, #arr, 34 do
local mnemonic = formatMnemonic( string.gsub(string.format("%-10s", arr[i]), " ", "&nbsp;") .. arr[i + 1] )
mnemonic = mnemonic:gsub(arr[i], "[[#"..arr[i].."|"..arr[i].."]]")
local descrip = formatDescription( arr[i + 2] )
local word = string.addSpacing(string.gsub(arr[i + 3], " ", ""), 4)
s = s .. "|-\n"
s = s .. "| style=\"text-align: left;\"| "font-family: ..Consolas,Monaco,Lucida arr[i]Console,monospace; ..padding: "1px ||7px style=\"text-align:1px left7px;\"| " .. arr[i + 1] .. "\n"mnemonic
.. " || style=\"text-align: left; font-family: Consolas,Monaco,Lucida Console,monospace; padding: 1px 7px 1px 7px;\"| " .. descrip
.. " || style=\"font-family: Consolas,Monaco,Lucida Console,monospace; padding: 1px 7px 1px 7px;\"| " .. word
.. "\n"
end