A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.

Apresentações semelhantes


Apresentação em tema: "Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula."— Transcrição da apresentação:

1 Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 17: Características independentes da máquina 1

2 Introdução Os macroprocessadores não se relacionam diretamente com a arquitetura da máquina No entanto, faz parte da extensão de suas funções – Método para a concatenação de parâmetros das macros com outras strings – Método para geração de labels sem duplicidade – Expansão condicional das macros – Uso de palavras-chaves como parâmetros das macroinstruções 2

3 Concatenação de parâmetros das macros A maioria dos macroprocessadores permite a concatenação de parâmetros com outras strings Imagine que um programa contivesse uma série de variáveis: XA1, XA2, XA3,..., outra série: XB1, XB2, XB3,... Se ambas as séries tivessem que ser submetidas a um processamento semelhante, o programador poderia incorporar o processamento a um macro 3

4 Concatenação de parâmetros das macros Imagine que o parâmetro da macroinstrução se chamasse &ID O corpo da definição da macro poderia conter uma instrução como – LDA X&ID1 – Na qual o parâmetro &ID seria concatenado depois da string X e antes da string 1 Pode existir ambiguidade entre &ID e &ID1 4

5 Concatenação de parâmetros das macros A solução pode ser um operador de concatenação especial No SIC é usado o caracter – Assim a instrução anterior seria escrita – LDA X&ID-1 De modo que o final do parâmetro &ID ficasse claramente identificado O macroprocessador elimina todas as ocorrências do operador de concatenação logo depois da substituição de parâmetros com – 5

6 Concatenação de parâmetros das macros 6

7 Geração de Labels sem Duplicidade Em geral não é possível que o corpo das instruções de macros contenham labels comuns Isso nos obrigaria a usar o endereçamento relativo nas fontes dos programa (*-3, *-14, etc) Esse modelo se torna muito inconveniente, então muitos macroprocessadores dele 7

8 Geração de Labels sem Duplicidade Uma solução é usar um símbolo especial (ex: $) com os labels na definição da macro Na ativação de macro todos os símbolos iniciados por $ são substituídos por $xx, onde xx é um contador que indica o número de macroinstruções expandidas 8

9 Geração de Labels sem Duplicidade 9

10 O assembly do SIC permite o caracter $ nos símbolos Entretanto, não se recomenda o uso deste caracter nos programas-fontes para evitar o conflito entre os símbolos gerados pelo programador e os símbolos produzidos pelo macroprocessador 10

11 Expansão Condicional das Macros Nos exemplos anteriores, cada instrução de ativação de macro se expandia sempre na mesma sequência de instruções Estas instruções podiam ser modificadas pela substituição de parâmetros mas sua forma e a ordem na qual estavam escritas nunca se alterava A fig. a seguir exemplifica a expansão condicional de macros 11

12 Expansão Condicional das Macros 12

13 Expansão Condicional das Macros 13

14 Expansão Condicional das Macros 14

15 Expansão Condicional das Macros 15

16 Expansão Condicional das Macros A estrura IF avalia uma expressão booleana codificada como seu operando Se o valor for VERDADEIRO, as instruções posteriores serão geradas até que um ELSE seja encontrado Caso contrário, estas instruções serão saltadas e o programa gerará as instruções subsequentes ao ELSE A instrução ENDIF termina a expressão condicional (a cláusula ELSE pode ser omitida) 16

17 Expansão Condicional das Macros Se o parâmetro &MAXLTH for uma string nulo a instrução da linha 45 será gerada Caso contrário, a instrução da linha 47 será gerada Nas linhas 26 a 28 a instrução controlada pelo IF não é uma linha a ser gerada, e sim uma atribuição ao parâmetro &EORCK através de SET A implementação descrita não permite o uso de ninhos de IF 17

18 Expansão Condicional das Macros É importante entender que o teste das expressões booleanas em instruções IF ocorre no momento em que as macros são expandidas Quando o programa é montado, todas as decisões já foram tomadas Haverá apenas uma sequência de instruções no código-fonte 18

19 Expansão Condicional das Macros A figura a seguir usa um loop WHILE em tempo de macro WHILE especifica que as linhas seguintes, até a próxima instrução ENDW, deverão ser geradas repetidamente enquanto a condição for verdadeira Esse método de implementação não permite o uso de ninhos de WHILE 19

20 Expansão Condicional das Macros 20

21 Expansão Condicional das Macros Expansão da macro usando WHILE 21

22 Palavras-chaves Todas as definições de macroinstruções vistas até agora usam parâmetros posicionais, i.e, os parâmetros e argumentos são associados uns aos outros conforme a posição que ocupam no protótipo da macro e na instrução de ativação da macro Se um argumento tiver que ser omitido, a instrução de ativação da macro deverá ter um argumento nulo 22

23 Palavras-chaves Por exemplo, se uma macroinstrução GENER que tem 10 parâmetros possíveis, mas não determinada circunstância, apenas o 3º e o 9º devam ser especificados, temos – GENER,,DIRECT,,,,, 3. Como alternativa, temos a especificação de parâmetros usando palavras-chaves que identificam o parâmetro correspondente 23

24 Palavras-chaves Assim para o exemplo anterior teríamos – GENER TYPE=DIRECT, CHANNEL=3. A fig. a seguir mostra uma versão da definição de RDBUFF tendo palvras-chaves como parâmetros 24

25 Palavras-chaves 25

26 Palavras-chaves 26

27 Palavras-chaves 27

28 Referências Leland L Beck. Desenvolvimento de software básico. 2ª ed. Rio de Janeiro: Campus, p. 28


Carregar ppt "Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula."

Apresentações semelhantes


Anúncios Google