cer-0 / 5cv14

Práctica de la materia de compiladores
0 stars 0 forks source link

EscribeEnsamblador() acepta varias variables en una instruccion #18

Closed DavidENicolasC closed 9 months ago

DavidENicolasC commented 9 months ago

El ensamblador acepta varias variables en una instruccion

Se corrigio el bug que impedía escribir varias variables en una instrucción, y que éstas fueran escritas en ensamblador.

Lo que sucedía es que la función EscribeEnsamblador() aún no soportaba esta característica, ya que fue escrita antes de agregar esta funcionalidad al análisis sintáctico.

Ahora, el siguiente programa:

int a, b;
int c, d;
float e, f, g;
b = 10;
d = 5 + 1;
a = 3 * b + 5 - d;

Se compila como sigue:

.model small

.stack

.data
    a DW ?
    b DW ?
    c DW ?
    d DW ?
    e DW ?
    f DW ?
    g DW ?
    T0 DW ?
    T1 DW ?
    T2 DW ?
    T3 DW ?

.code
begin:
    mov ax, @data
    mov ds, ax

    mov ax, 10
    mov T0, ax
    mov ax, T0
    mov b, ax

    mov ax, 5
    add ax, 1
    mov T0, ax

    mov ax, T0
    mov T1, ax
    mov ax, T1
    mov d, ax

    mov ax, 3
    mov bx, b
    mul bx
    mov T0, ax

    mov ax, T0
    add ax, 5
    mov T1, ax

    mov ax, T1
    sub ax, d
    mov T2, ax

    mov ax, T2
    mov T3, ax
    mov ax, T3
    mov a, ax

    END begin