Ao criar programas para o simulador MVN, podemos trabalhar com dois tipos de arquivos: arquivos assembly (.asm) e arquivos que representam valores nas posições de memória (.mvn).
Como a vida é curta demais para programar sem syntax highlighting (i.e., os códigos "coloridinhos" no editor), segue abaixo um exemplo de como configurar o VSCode para trabalhar com arquivos .mvn e .asm.
Siga as instruções de instalação da página da extensão Highlight, ou busque por ela na aba de Extensões do VSCode.
- Acesse a aba de extensões do seu VSCode.
- Encontre o Highlight na lista de extensões instaladas.
- Clique em "Manage" no botão com o símbolo de engrenagem.
- Selecione "Settings".
- Clique em "Edit in settings.json
O arquivo settings.json da extensão deverá abrir no seu VSCode
e poderá ser editado como qualquer outro arquivo.
O JSON abaixo contém os valores do campo "highlight.regexes"
correspondentes às regras que precisamos para os arquivos .asm e .mvn.
Adicione-as ao seu arquivo de configurações,
dentro do campo "highlight.regexes".
Todas as regras são baseadas em expressões regulares, e as cores são definidas por códigos hexadecimais. Divirta-se explorando-as e modificando-as, se desejar.
{
"highlight.regexes": {
// Highlight MVN: ASM instructions
"(?<!\\w)(JP|JZ|JN|LV|AD|SB|ML|DV|LD|MM|SC|RS|HM|GD|PD|SO)(?!\\w)": {
"filterFileRegex": ".*\\.asm",
"decorations": [
{
"color": "#569CD6", // Blue for instructions
"fontWeight": "bold"
}
]
},
// Highlight MVN: comments
"(;.*)": {
"filterFileRegex": ".*\\.[asm|mvn]",
"decorations": [
{
"color": "#6A9955", // Green for comments
}
]
},
// Highlight MVN: numbers in hexadecimal format
"(/[0-9A-F]+)": {
"filterFileRegex": ".*\\.asm",
"decorations": [
{
"color": "#B5CEA8", // Light green for hex values
// "fontStyle": "italic"
}
]
},
// Highlight MVN: constants in various formats
"([/=@#][0-9A-F]+|'/[ -~]')": {
"filterFileRegex": ".*\\.asm",
"decorations": [
{
"color": "#DCDCAA", // Yellow for constants
// "fontStyle": "italic"
}
]
},
// Highlight MVN: export/import markers
"([>|<]\\s+[A-Za-z_][A-Za-z0-9_]*)": {
"filterFileRegex": ".*\\.asm",
"decorations": [
{
"color": "#9CDCFE", // Light blue for export/import markers
}
]
},
// Highlight MVN: pseudo-instructions
"(?<!\\w)(@|&|K|\\$|#)(?!\\w)": {
"filterFileRegex": ".*\\.asm",
"decorations": [
{
"color": "#D19A66", // Orange for pseudo-instructions
"fontWeight": "bold"
}
]
},
// Highlight MVN: labels
"([A-Za-z_][A-Za-z0-9_]*)": {
"filterFileRegex": ".*\\.asm",
"decorations": [
{
"color": "#C586C0", // Purple for labels
"fontWeight": "bold"
}
]
},
// Highlight MVN: memory addresses, opcodes and operands in MVN binary format
"([0-9A-FX]{4})( *)([0-9A-F]{1})([0-9A-F]{3})": {
"filterFileRegex": ".*\\.mvn",
"decorations": [
{
"color": "#C586C0", // Purple for memory addresses
},
{}, // Ignore spaces
{
"color": "#67b7f8", // Blue for opcodes
"fontWeight": "bold"
},
{
// Nothing for operand values - sticking to default color
},
]
},
}
}