Como são seqüências embutidos em arquivos binários?
-
11-09-2019 - |
Pergunta
Eu estou escrevendo meu próprio bytecode e máquina virtual (na NET) e uma coisa que eu não consigo entender é como cordas inserir em minha bytecode. Alguma idéia agora como eu deveria fazê-lo?
Solução
Aparentemente você está definindo o seu próprio código de byte. isso não tem nada a ver com a sintaxe / gramática do .NET CIL, certo?
Se assim for, e se você preocupação é como codificar strings (ao contrário de outras instruções, como saltos, loops, etc.), você pode simplesmente inventar o seu próprio "instrução" para ele.
Por exemplo, o código hexadecimal "01xx" poderia ser para uma string contendo xx bytes (0 -255). Seu intérprete de linguagem, então, ser ensinado para armazenar essa string na pilha (ou onde) e passar para decodificar o código a seguir xx byte localizado bytes ainda mais para baixo o fluxo de bytecode.
Se você preocupação é como misturar dados de caracteres e dados numéricos em qualquer armazenamento que você tem para o bytecode, forneça detalhes específicos e talvez alguém possa ajudar ...
Outras dicas
Se você pode armazenar números em uma matriz, em seguida, você pode armazenar dados ASCII na mesma matriz. Ignorando a idéia de uma string como uma classe, uma seqüência simples é apenas uma matriz de caracteres de qualquer maneira - e em C, um byte com um valor de 0 indica o fim da cadeia
.Como uma simples prova-de-conceito em C:
int main()
{
putchar(104); // h
putchar(101); // e
putchar(108); // l
putchar(108); // l
putchar(111); // o
putchar(10); // \n
return 0;
}
Output:
$ ./a.out hello
Talvez um referência em matrizes de caracteres como strings ajudaria?