Bom aqui começa mais uma jornada de Compiladores Complicados, mais extremamente eficientes,
Editando Programas
O código-fonte é um arquivo texto comum, e como tal pode ser editado por qualquer editor de textos ou programas disponível.
Logicamente o uso de editores específicos para programação são mais práticos e aumentam a produtividade.
Compilando
O compilador Max não gera arquivos executáveis. Como resultado da compilação, é gerado um arquivo com a extensão .max. Os arquivos .max contêm pseudo-código (código virtual), e são executados através de um runtime (da mesma forma que aplicações Java, por exemplo).
Em ambientes Windows, o compilador (max.exe) deve ser chamado da linha de comando de uma janela console (Aviso ou Prompt do DOS). Para uma maior comodidade, certifique-se que o diretório de arquivos binários do Max (geralmente C:\Program Files\Max20\bin) está declarado na variável de ambiente PATH.
O mesmo pode-se se aplicar ao ambiente Linux, associando-se à variável de ambiente PATH o diretório dos arquivos binários do Max (geralmente /usr/local/max20/bin/) dessa forma tanto o compilador quanto o runtime poderão ser invocados independentemente do diretório atual.
Sintaxe típica do compilador:
max [-opcoes] [-help] prg1 prg2...prgN
Nota: O Max pode compilar programas-fontes com qualquer extensão. A extensão padrão é .prg que pode ser omitida.
Exemplo:
Para compilar uma aplicação formada por diversos arquivos .prg onde o módulo principal é menu.prg, gerando um único objeto chamado contab.max, utilize:
max menu.prg *.prg -link contab Opções de Compilação
| Geração de Código | Descrição |
|---|---|
| -link resultado | Gera um único binário com todos os módulos agrupados, nomeados como resultado.max |
| Avisos de Erros | |
| -help | Exibe um texto de auxílio com a sintaxe e um resumo das opções |
| -w N | Niveis de erros. N deve ser um número de 0 a 3. |
| -pause | Espera o pressionamento de uma tecla entre os módulos |
| Pré-Processamento | |
| -dconstante | Define uma constante de pré-processamento. Ex: -DVERSAO_WEB |
| -ppo | Gera um arquivo com extenção .ppo de pré-processamento |
| Compilação | |
| -extended ou -ext | Compilação de código com sintaxe extendida (compatível com Joiner) |
| -noline | Suprime as informações de linha no binário gerado |
| -m | Compilação modular |
| -msp | Compilação de bibliotecas para ser usado no MSP |
Linkeditando
Por causa do formato avançado do código virtual gerado pelo Max, não existe necessidade de linkedição. Os arquivos .max gerados pelo compilador podem ser executados diretamente através do executor maxrun. Veja o tópico Executando Aplicações abaixo.
Combinando Módulos
O Max permite um alto grau de modulariade em suas aplicações. Isso significa que pode-se manter cada módulo de sua aplicação em blocos independentes menores separadamente, podendo então ser organizados conforme a função de cada um.
Há portanto duas possibilidades de trabalho:
- Criar vários módulos .max separados e especificá-los na chamada ao maxrun:
modulo1.prg -> modulo1.max
modulo2.prg -> modulo2.max
modulo3.prg -> modulo3.max
Execução: maxrun modulo1 modulo2 modulo3
- Criar um único arquivo .max já com todos os módulos agrupados:
max modulo1 modulo2 modulo3 -link aplicacao
Execução: maxrun aplicacao
Compilando vários módulos num só
Utilize a opção -link do compilador Max, para criar em tempo de compilação um único arquivo binário já com todos os módulos:
max *.prg -link sistema.max Agrupando vários módulos já compilados
O utilitário MaxLink, disponibilizado junto com o pacote de instalação do Max, basicamente agrupa um ou vários módulos já compilados em um único arquivo .max. Veja o exemplo :
maxlink minhaAplic + minhaLib, meuSistema Dica: Cuidado com o nome dos módulos
Evite utilizar nomes de módulos genéricos (como clientes, processa, menu, etc), que podem ser facilmente duplicados numa mesma aplicação. Como o Max carrega dinamicamente cada módulo conforme a necessidade, módulos com nomes duplicados geram bugs normalmente difíceis de detectar.
Executando Aplicações
Como já foi dito anteriormente, o compilador Max não gera arquivos executáveis. A geração de código virtual (pseudo código) tem inúmeros benefícios, sendo largamente adotada por tecnologias de última geração como Java e Microsoft .Net.
Por essa razão, todas as aplicações Max necessitam de um executor runtime chamado MaxRun. O MaxRun é uma Máquina Virtual (Virtual Machine ou Runtime), é desse núcleo a responsabilidade de controlar e interagir com a máquina e o sistema operacional, e efetivamente executar a aplicação.
Nota: O executor runtime MaxRun pode ser livremente distribuído com aplicações Max sem o pagamento de roylaties. Consulte o arquivo redistribution.txt instalado juntamente com o Max para maiores informações sobre outros módulos que podem (e devem) ser distribuídos juntamente com aplicações Max.
Executor de Aplicações MaxRun
Sintaxe básica do MaxRun:
maxrun [-q] [-d] [-e modulo] prog1..progN [-p param1..paramN] | Opção | Descrição |
|---|---|
| -help | Exibe um texto de auxílio com a sintaxe e um resumo dos parâmetros |
| -q | Executa a aplicação sem a exibição dos direitos e informações de cabeçalho |
| -d | Executa a aplicação em modo de depuração (debugger) |
| -e modulo | Especifica que modulo deve ser considerado o ponto de entrada da aplicação |
| -p param1 param2 ... paramN | Define os parâmetros que devem ser passados para a aplicação que estará sendo executada. A partir deste ponto na linha de comando, os parâmetros especificados não serão considerados parâmetros do MaxRun, mas parâmetros a serem passados para a aplicação. |
Formas de invocar o MaxRun
Exemplo:
maxrun sistema -e menu_inicial -d -p 385 B 1 INICIO
• invoca o depurador (-d)
• carrega o arquivo sistema.max
• inicia a execução da aplicação pelo módulo menu_inicial (ponto de entrada) contido em sistema.max
• são passados 3 parâmetros para menu_inicial: 385, B e INICIO
Ponto de Entrada (Entry-Point)
O Ponto de Entrada (Entry-Point) de uma aplicação é o módulo principal onde a aplicação deve iniciar. Em alguns casos, pode ser necessário especificar explicitamente o nome desse módulo quando for chamado o executor MaxRun.
Durante o processo de compilação o Max automaticamente cria e nomeia esse primeiro módulo conforme o nome do arquivo (sem a extensão) do código fonte que está sendo compilado. Por exemplo, a compilação de um programa chamado sistema.prg irá produzir um arquivo binário chamado sistema.max.
Como padrão o MaxRun irá considerar que o ponto de entrada da sua aplicação, no caso, sistema.max, será o módulo chamado sistema.
Entretanto, para a execução de sistemas gerados a partir de diversos arquivos .prg, agrupados em um único .max (com a opção -link ou pelo utiliário MaxLink), pode ser necessário definir explicitamente o módulo que será o Ponto de Entrada da aplicação (opção -e do MaxRun). Dessa forma, o executor (runtime) MaxRun saberá exatamente por onde sua aplicação deve começar.
maxrun sistema.max bibliotecas.max -e menu Depurador Integrado
O executor MaxRun possui um depurador (debugger) totalmente integrado que pode ser invocado diretamente na linha de comando (do MaxRun) através da opção -d. Também é possivel invocar o depurador durante a execução da aplicação através da combinação de teclas Alt+D. (Isso pode ser desabilitado na aplicação através do comando SET KEY)
Note que para que o depurador funcione é necessário que a aplicação seja compilada com as informações de linha (padrão). A opção -noline omite informação utilizada pelo depurador para sincronizar e exibir o código fonte se acionado, mas isso ocasiona o indesejável efeito dessa informação também ser omitida no caso de ocorrerem erros na aplicação (a mensagem de erro não irá exibir a linha ou programa onde o erro foi ocasionado).
IMPORTANTE: o código fonte da aplicação não faz parte do arquivo .max gerado. Para que o depurador possa ser invocado, é necessário que os arquivos .prg da aplicação estejam presentes. Portanto, não existe qualquer risco de terceiros conseguirem acesso ao fonte da aplicação descompilando ou acionando o depurador. O depurador apenas vai abrir e exibir o código fonte se os arquivos .prg correspondentes estiverem instalados no mesmo diretório da aplicação (.max).
Criando Atalhos no Windows
É possível criar um atalho (shortcut) para sua aplicação Max em seu desktop Windows como para qualquer outro programa. Para tanto, clique com o botão direito do mouse em sobre uma área livre de seu desktop, escolha Novo / Atalho. Na caixa de diálogo que se abre, digite no campo "linha de comando", exatamente a linha de comando usada para executar sua aplicação no console, desde o caminho (path) do núcleo MaxRun até as opções e parâmetros.
Variáveis de Ambiente
Variáveis utilizadas pelo compilador
MAXINCLUDE
Variável onde se define um caminho (path) de um diretório, onde o compilador Max deve procurar os arquivos de inclusão definidos pela diretiva #INCLUDE, no caso de não serem encontrados no diretório atual. Apenas um caminho de diretório podes ser definido nessa variável.
Variáveis utilizadas na execução da aplicação
MAXMEMORY
Variável usada pelo núcleo de execução do Max (MaxRun) para determinar a quantidade máxima (em Kbytes) de memória a alocar para a aplicação. Isso evita o uso abusivo de memória pela sua aplicação. Se a aplicação atingir esse limite, ocorrerá um erro de insuficiência de memória, portanto é recomendado testar sempre as aplicações para determinar se o valor é suficiente para cada uma das aplicações.
O valor padrão é 2000, para aplicações maiores recomenda-se 4000.
MAXPATH
Variável que especifica uma lista de caminhos (paths) onde o núcleo de execução MaxRun deve procurar por seus arquivos .max, quando não são encontrados no diretório atual. É possível definir quantos caminhos forem necessários, sempre separando-os com um sinal de dois-pontos (:).
O MaxRun primeiro verifica se o módulo existe no diretório atual. Se não existir, o núcleo irá começar a procurar pelo módulo especificado em cada caminho especificado na variável, conforme a ordem em que aparecem, até que o módulo seja encontrado.

Nenhum comentário:
Postar um comentário