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?

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top