Vectores en java
En JAVA, un vector se declara escribiendo:
static int v [] = new int [N]
En este caso se trata de un vector de N enteros de 32 bits. De forma similar se declararían vectoresde
byte, short, long, char ó boolean. La representación del vector en la memoria del computador
se realiza como muestra la figura.
v:
N
Puntero
Tamaño del vector
v[0]
v[1]
v[2]
v[3]En la dirección v hay un puntero que apunta a una posición de memoria en la que está el tamaño del
vector (siempre 4 bytes) seguido de los elementos del vector.
En TASM el vector se declararíaasí:
.data
v
dd
aux
dd
dd
aux
N
N
; puntero
; tamaño
; elementos del vector
DUP (?)
La sentencia a = v[j] se traduciría en TASM así:
MOVZX
MOV
MOV
MOV
EBX,
ES,
ESI,
EAX,word ptr v
v+2
j
ES:4[EBX+ESI*4]
MOV
;
;
;
;
;
tomo el desplazamiento
tomo el segmento
índice
el desplazamiento 4 es para
saltar el tamaño del vector
a,EAX
El tamaño delvector puede referenciarse en JAVA escribiendo v.length. Así, para recorrer todo el
vector, se puede escribir:
for (i=0; i < v.length; i++)
Este tipo de vectores se denominan estáticos, porque antesde iniciarse la ejecución se reserva, en el
segmento de datos, un espacio de memoria para todo el vector.
En JAVA es posible trabajar con vectores dinámicos. En este caso, en el momento de ladeclaración de
datos escribiríamos únicamente:
v int [];
Antes de iniciar la ejecución, se reservaría en memoria únicamente un espacio para el puntero al vector
(todavía no sabemos el tamaño que tendráel vector). En el código del programa podemos escribir:
v = new int [N];
En el momento de ejecutar esta sentencia el computador buscaría en memoria un espacio libre de
(N+1)*4 bytes (los que senecesitan para albergar el tamaño del vector y sus N elementos de tipo int),
e inicializaría el puntero que se reservó antes de empezar la ejecución con la dirección lógica a partir de
la cual está...
Regístrate para leer el documento completo.