• Nenhum resultado encontrado

Lua AI ¸˜ L 5.0

N/A
N/A
Protected

Academic year: 2022

Share "Lua AI ¸˜ L 5.0"

Copied!
25
0
0

Texto

(1)

A I

MPLEMENTAC

¸ ˜

AO DE

L

UA

5.0

Roberto Ierusalimschy, PUC-Rio

Lua

the

langua ge

(2)

O D

IFERENCIAL DE

L

UA

Portabilidade

Unix, Windows, MS-DOS, Mac OS, BeeOS, OS/2, EPOC, Playstation II, etc.

Pequeno Tamanho

distribuic¸ ˜ao completa cabe confortavelmente em um diskete

Simplicidade: poucos (mas poderosos) mecanismos

e.g. tabelas

Efici ˆencia

apesar dos pontos anteriores

(3)

O D

IFERENCIAL VERSUS

V

ERSAO

˜ 5.0

Portabilidade

melhor suporte para tipos n ˜ao convencionais

Pequeno Tamanho

maior

Simplicidade: poucos (mas poderosos) mecanismos

visibilidade l ´exica, co-rotinas

Efici ˆencia

mais r ´apida

(4)

C

OMO

M

ANTER

E

FICIENCIA

ˆ ?

Pequeno tamanho restringe o uso de otimizac¸ ˜oes complexas

Simplicidade restringe o uso de construc¸ ˜oes espec´ıficas

Por outro lado, pequeno tamanho contribui para efici ˆencia

cash, paginac¸ ˜ao, etc.

Simplicidade permite nos concentrarmos em poucas otimizac¸ ˜oes

e.g. tabelas

(5)

A

LGUMAS

M

ELHORIAS DE

L

UA

4.0

PARA

5.0

Visibilidade l ´exica

Nova m ´aquina virtual

Otimizac¸ ˜ao no uso de tabelas como arrays

(6)

V

ISIBILIDADE

L ´

EXICA

Func¸ ˜oes aninhadas podem acessar qualquer vari ´avel externa, seguindo regras usuais de escopo

function f (x)

local f1 = function (y) return x+y end return f1(10)

end

Problema: vari ´avel pode ser acessada ap ´os t ´ermino da func¸ ˜ao que a define

function f (x)

return function (y) return x+y end end

f1 = f(10); print(f1(20))

(7)

V

ISIBILIDADE

L ´

EXICA

(

CONT

.)

Visibilidade L ´exica d ´a enorme poder a uma linguagem . . .

vari ´aveis locais a um m ´odulo

base de programac¸ ˜ao funcional

opc¸ ˜ao para programac¸ ˜ao OO

. . . mas implementac¸ ˜ao ´e complicada . . .

no exemplo anterior, n ˜ao pode morar em pilha/registrador

. . . principalmente para um compilador de um passo

ao ver uma vari ´avel, compilador n ˜ao sabe se ela ser ´a usada por alguma func¸ ˜ao aninhada

(8)

I

MPLEMENTAC

¸ ˜

AO DE

V

ISIBILIDADE

L ´

EXICA

Via indirec¸ ˜ao: func¸ ˜ao aninhada se refere a vari ´avel externa via um n ´o, que pode apontar para a pilha ou para o heap

x

x

top

nested function closure

pending vars.

stack

(9)

I

MPLEMENTAC

¸ ˜

AO DE

V

ISIBILIDADE

L ´

EXICA

Quando vari ´avel sai de escopo, seu valor ´e movido da pilha para o heap, e o ponteiro no n ´o ´e corrigido

x

x

top

nested function closure

pending vars.

stack

vari ´avel sai de escopo

x x

pending vars.

top

nested function closure

stack

(10)

M ´

AQUINAS DE

P

ILHA

Maioria das m ´aquinas virtuais usam modelo de m ´aquina de pilha

tradic¸ ˜ao iniciada com p-code, de Pascal

seguida por Java, Perl, etc.

Exemplo Lua 4.0:

while a<lim do a=a+1 end

3 GETLOCAL 0 ; a

4 GETLOCAL 1 ; lim

5 JMPGE 4 ; to 10

6 GETLOCAL 0 ; a

7 ADDI 1

8 SETLOCAL 0 ; a

9 JMP -7 ; to 3

(11)

O

UTRO

M

ODELO PARA

M ´

AQUINA

V

IRTUAL

M ´aquinas de pilha t ˆem instruc¸ ˜oes muito b ´asicas

M ´aquinas interpretadas t ˆem alto custo extra por instruc¸ ˜ao

M ´aquinas de registradores podem ter instruc¸ ˜oes mais poderosas

ADD 0 0 [1] ; a=a+1

Custo de decodificar instruc¸ ˜oes mais complexas ´e compensado pelo menor n ´umero de instruc¸ ˜oes

“registradores” s ˜ao pr ´e-alocados na pilha, no in´ıcio de cada fun- c¸ ˜ao.

n ´umero ilimitado de registradores facilita gerac¸ ˜ao de c ´odigo

(12)

F

ORMATOS DAS

I

NSTRUC

¸ ˜

OES DA

M ´

AQUINA

V

IRTUAL

O formato 1 ´e usado para todos os tipos de operadores

aritm ´etica, comparac¸ ˜oes, indexac¸ ˜ao, etc.

Permite at ´e 256 “registradores”

Terceiro operando ainda permite 768 constantes

Qualquer valor Lua, guardado em uma tabela de constantes (por func¸ ˜ao)

reg B reg A

op reg/const C

(13)

E

XEMPLOS DE

I

NSTRUC

¸ ˜

OES

MUL 0 0 [2] ; a = 2*a

GETTABLE 2 1 ["x"] ; t.x

SETTABLE 0 1 ["y"] ; a = t.x CMP 0 ‘<’ [10] ; a<10 ?

assumindo que est ´a no registrador 0 e no 1

(14)

F

ORMATOS DAS

I

NSTRUC

¸ ˜

OES DA

M ´

AQUINA

V

IRTUAL

O formato 2 ´e usado para acesso a globais e constantes que n ˜ao cabem no formato 1

Isto ´e, em func¸ ˜oes com mais de 768 constantes . . .

op reg A const Bc

(15)

F

ORMATOS DAS

I

NSTRUC

¸ ˜

OES DA

M ´

AQUINA

V

IRTUAL

O formato 3 ´e usado para jumps

jumps s ˜ao sempre relativos

op offset

(16)

E

XEMPLO MAIS

C

OMPLETO

while a<lim do a=a+1 end

-- Lua 4.0

3 GETLOCAL 0 ; a 4 GETLOCAL 1 ; lim 5 JMPGE 4 ; to 10 6 GETLOCAL 0 ; a

7 ADDI 1

8 SETLOCAL 0 ; a

9 JMP -7 ; to 3

-- Lua 5.0

3 JMP 0 1 ; to 5

4 ADD 0 0 [1] ; a = a+1 5 CMP 0 2 1 ; a < b?

6 JMP 0 -3 ; to 4

(17)

T

ABELAS EM

L

UA

Unico mecanismo de estruturac¸ ˜ao de dados da linguagem´

simplicidade

Arrays associativos com chaves gen ´ericas

Permite implementac¸ ˜ao f ´acil e eficiente de diversas estruturas de dados usuais

arrays, records, conjuntos, listas, etc.

(18)

T

ABELAS

(

CONT

.)

Arrays s ˜ao simplesmente tabelas cujas chaves s ˜ao inteiros

a =

for i=1,N do a[i] = 0 end

Records s ˜ao tabelas com os nomes dos campos como chaves

ac¸ucar sint ´atico: a.x a["x"]

Conjuntos representam seus elementos como chaves de uma tabela

a[x] = 1 -- inserc¸˜ao

if a[x] then ... -- pertinˆencia

(19)

I

MPLEMENTAC

¸ ˜

AO

O

RIGINAL DE

T

ABELAS

Algoritmo de hash, com listas internas para tratamento de colis ˜ao Executa rehash quando tabela fica cheia:

0 nil

val

link value

key

insere chave 4

0 nil

val

link

4 nil

val

value key

Evita colis ˜oes secund ´arias, movendo elementos durante inserc¸ ˜ao:

0 nil

val

link

4 nil

val

value key

insere chave 3

0 nil

val

val

link

val 4

3

value key

(20)

N

OVA

E

STRUTURA DE

T

ABELAS

Formada por duas partes, uma parte “hash” e uma parte “array”

Exemplo: n = 3; 100, 200, 300

100 200 300 nil

Header

n 3

nil

(21)

E

STRUTURA

I

NTERNA DE

T

ABELAS

Problema: como distribuir os elementos entre as partes?

ou: qual o melhor tamanho para a parte array?

Arrays esparsos podem desperdic¸ar muito espac¸o

uma tabela com um ´unico elemento no ´ındice 1000 n ˜ao deve ter 1000 elementos

como a tabela anterior deve crescer ao adicionarmos o ´ındice 5?

100 200 300 nil

Header

n 3

nil

5 500

nil

Header

100 200 300 nil

n 3

nil

500 nil nil nil

(22)

C ´

ALCULO DE

T

AMANHO DE

T

ABELAS

Algoritmo executado somente durante o rehash

Calcula tamanho da parte array seguindo as regras abaixo:

´e uma pot ˆencia de 2

a tabela cont ´em pelo menos ´ındices inteiros no intervalo

a tabela cont ´em pelo menos um ´ındice inteiro no intervalo

Algoritmo ´e "! # , onde ! ´e o n ´umero de elementos na tabela

(23)

C ´

ALCULO DE

T

AMANHO DE

T

ABELAS

(

CONT

.)

Id ´eia b ´asica: criar um array onde $&% ´e o n ´umero de chaves inteiras no intervalo ' %)(

+*

'

%-,

array precisa ter apenas 32 elementos

Tarefa f ´acil, dado um algoritmo eficiente para calcular .0/2143 65

que ´e o ´ındice do maior bit 1 de

(24)

C ´

ALCULO DE

T

AMANHO DE

T

ABELAS

(

CONT

.)

Depois, basta percorrer o array procurando o melhor tamanho:

total = 0

for i=0,32 do

if a[i] > 0 then total += a[i]

if total >= 2ˆ(i-1) then bestsize = i

end end end

(25)

R

ESULTADOS

P

ARCIAIS

Visibilidade l ´exica: sem custo para quem n ˜ao usa

Nova m ´aquina virtual: at ´e 30% mais eficiente

Nova estrutura de tabelas: economia de mais de 50% de mem ´oria na representac¸ ˜ao de arrays

sem prejuizo para representac¸ ˜ao de arrays esparsos

Referências

Documentos relacionados

Distribuição para TV a cabo ou satélite é adicionada à tomada RJ45 utilizando TV sobre os divisores RJ45 Os cabos e patch cords não fi cam visíveis. O uso de RJ45 de forma

Endereço para correspondência: Fábio Herrmann

CARTOGRAMAS (Mapas Temáticos)– em geral, os cartogramas são definidos como mapas sobre os quais são inseridas informações qualitativas ou quantitativas. Os cartogramas

Realizar um projeto de intervenção educativa sobre a importância da adesão ao tratamento dos pacientes com Hipertensão Arterial Sistêmica na Unidade Básica de

O leitor possui um sistema de navegação intuitivo dos menus para o orientar entre as diferentes definições e operações. Ou pressione a tecla MENU para acessar o menu raiz.

Quanto à hipótese alternativa sugerida, o flúor fosfato acidulado realmente não foi eficaz na prevenção do manchamento por café de dentes bovinos clareados, enquanto a

&gt; 5 Acessórios smart para o sistema de som, Totalmente compatíveis com todos os sistemas de áudio e acustica interior, para que tenha um perfeito sistema de som no carro..

Partindo do pressuposto de que não são os conteúdos que devem gerar os currículos e sim os objetivos que devem estabelecer o que deverá ser ensinado numa