Slide 1 - MLTech

Propaganda
Exercício
• Deseja-se criar um frame-buffer para armazenar
uma imagem high color (16 bits) por pixel de
1024 x 768 pixels. Calcule a quantidade de
memória utilizada em bytes e os valores de L e
b. Em seguida, calcule os endereços no framebuffer dos pixels dados abaixo, sabendo-se que
FB=8K:
• (200,10)
• (1003,108)
• (101, 7)
• (17,11)
Resolução
• m = FB + [ x + Ly ] * b
onde:
m : é o endereço do início do pixel no FB
FB: endereço inicial do Frame-Buffer
L : número de pixels numa linha da imagem
Neste caso, temos:
• FB=8192 (8*1024 = 8K)
• L=1024
• b=2 (16 bits / 8 = 2 bytes)
• Número de bytes ocupados = 1024 x 768 x 2
= 1.572.864 = 1.536Kb = 1,5Mbytes
Resultado da Execução do Script
C:\>perl fb.pl
FB=8192
L=1024
b=2
Size: 1.572.864 bytes
Para x= 200, y= 10 =>
Para x=1003, y=108 =>
Para x= 101, y= 7 =>
Para x= 17, y= 11 =>
m= 29.072
m=231.382
m= 22.730
m= 30.754
Script
my $cols=1024;
my $rows=768;
my $FB = 8*1024;
my $L = $cols;
my $b = 2;
print "FB=$FB, "L=$L\n", "b=$b\n";
print "Size: ", $cols * $rows * $b, "
bytes\n";
print getAddr(200,10),"\n";
print getAddr(1003,108),"\n";
print getAddr(101,7),"\n";
print getAddr(17,11),"\n";
sub getAddr {
my ($x,$y)=@_;
print "x=$x, y=$y\n";
my $m = $FB + ($x+$L*$y)*$b;
return $m;
}
Download