Na aula de hoje vamos criar uma biblioteca de stings para a MVN utilizando a ligação parcial.
O experimento foi inspirado na biblioteca string.h
do gcc.
Uma string é um vetor de caracteres seguindo conforme a tabela ASCII terminados
por um NULL
('\0'
ou 0x00
).
Implemente uma função STRLEN
que recebe no acumulador o endereço de uma string
e retorna no acumulador o tamanho em bytes dessa string. O rótulo dessa subrotina (STRLEN
)
deve ser exportado em seu programa.
Ref: strlen
Implemente uma função STRCMP
que recebe dois argumentos STRCMP_A
, STRCMP_B
com posições de string que serão comparadas, caracter a caracter seguindo o
valor deles na tabela ASCII. Caso a STRCMP_A
seja maior que STRCMP_B
retorna
1
, se for igual 0
, se for menor -1
(em complemento de 2). O rótulo dessa subrotina (STRCMP
)
e suas duas entradas(STRCMP_A
e STRCMP_B
) devem ser exportados em seu programa.
Ref: strcmp
Arquivo string.asm
com o codigo relocavel utilizandos os labels indicados
acima.
./mvn-cli assemble -i string.asm > string.int
./mvn-cli assemble -i test_len.asm > test_len.int
./mvn-cli link -i program.int -i string.int --complete > program.lig
./mvn-cli relocate -i program.lig --base 0 > program.mvn