cer-0 / 5cv14

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

EscribeEnsamblador.h convierte asignaciones en notaciones posfijas (jerarquización de operaciones) #22

Closed inrainmoi closed 8 months ago

inrainmoi commented 8 months ago

Use el algoritmo "shunting yard" para la conversión.

Notación polaca.

DavidENicolasC commented 8 months ago

La notacion posfija ya se convierte a ensamblador.

El programa siguiente:

int a, b, c;
b = 2;
a = 3 - b * (c + 2);
a = 1 + 2;

Se traduce como sigue:

.model small

.stack

.data
    a DW ?
    b DW ?
    c DW ?
    T0 DW ?
    T1 DW ?
    T2 DW ?
    T3 DW ?

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

    mov ax, 2
    mov T0, ax
    mov ax, T0
    mov b, ax

    mov ax, c
    mov bx, 2
    add ax, bx
    mov T0, ax

    mov ax, b
    mov bx, T0
    mul bx
    mov T1, ax

    mov ax, 3
    mov bx, T1
    sub ax, bx
    mov T2, ax

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

    mov ax, 1
    mov bx, 2
    add ax, bx
    mov T0, ax

    mov ax, T0
    mov T1, ax
    mov ax, T1
    mov a, ax

    END begin