Enviado em 17/09/2012 - 19:10h
Olá galera.. sou novo aqui no fórum e sou estudante de eng. da computação. Programo C há 2 anos. Estou a criar um montador do qual lê de um arquivo os códigos assemblies e converte para instruções de máquina. Trata-se de uma máquina virtual que estou criando.
int GENERATE_ASSEMBLIES (Memory **inicio, Memory **fim, char c[])
{
#if SYSTEM == LINUX
//ESSE É TRECHO MÁGICO QUE FAZ FUNCIONAR A FUNÇÃO strlen() ABAIXO.
//SE EU TIRAR ELA, A STRING FICA VAZIA E O MEU CÓDIGO NEM CHEGA ATÉ AQUI.
int cont = strlen_max(c, strlen(c));
if (strlen(c) == 1 || strlen(c) == 0)
{
MEMORY_add(inicio, fim, c, "");
return 1;
}
#endif
#if SYSTEM == WINDOWS
{
if (!strcmp(c, "") == 1)
{
MEMORY_add(inicio, fim, c, "");
return 1;
}
}
#endif
int i = 0;
char instruction[5];
strcpy(instruction, "");
int count = strlen(c);
while (c[i] != ' ' && i <= count)
{
sprintf(instruction, "%s%c", instruction, c[i]);
i++;
}
if (!strcmp(instruction, "push") == 1)
{
//Essa função adiciona a string numa struct e retorna 1 se sucesso.
return (MEMORY_add(inicio, fim, c, "00"));
}
...//continua.