main.cpp 17.09 KiB
#include <iostream>
#include <getopt.h>
#include <string>
#include "antlr4-runtime.h"
#include "SysY2022Lexer.h"
#include "MyVisitor.h"
#include "arm.h"
#include "asm_passes.h"
using namespace antlr4;
string tpdata=R"delimiter(.arch armv8-a
.text
.align 2
.syntax unified
.arm
.global main
float_abs:
float_abs68:
  vpush	{ d8, d9, d10, d11, d12, d13, d14, d15 }
  push	{ r4, r5, r6, r7, r8, r9, r10, r11, lr }
  mov	fp, sp
  sub	sp, sp, #20
  vmov.f32	s16, s0
  vstr	s16, [fp, #-4]
  mov	r4, #0
  mov	r5, r4
  str	r4, [fp, #-8]
  vmov	s16, r5
  vmov.f32	s17, s16
  vstr	s16, [fp, #-12]
  vcvt.f32.s32	s16, s17
  vstr	s16, [fp, #-16]
  vldr	s17, [fp, #-4]
  vldr	s18, [fp, #-16]
  vcmp.f32	s17, s18
  vmrs	APSR_nzcv, FPSCR
  blt	if_true_entry70
  b	if_next_entry72
if_true_entry70:
  vldr	s17, [fp, #-4]
  vneg.f32	s16, s17
  vmov.f32	s17, s16
  vstr	s16, [fp, #-20]
  vmov.f32	s0, s17
  add	sp, sp, #20
  pop	{ r4, r5, r6, r7, r8, r9, r10, r11, lr }
  vpop	{ d8, d9, d10, d11, d12, d13, d14, d15 }
  bx	lr
if_next_entry72:
  vldr	s17, [fp, #-4]
  vmov.f32	s0, s17
  add	sp, sp, #20
  pop	{ r4, r5, r6, r7, r8, r9, r10, r11, lr }
  vpop	{ d8, d9, d10, d11, d12, d13, d14, d15 }
  bx	lr
circle_area:
circle_area81:
  vpush	{ d8, d9, d10, d11, d12, d13, d14, d15 }
  push	{ r4, r5, r6, r7, r8, r9, r10, r11, lr }
  mov	fp, sp
  sub	sp, sp, #92
  mov	r4, r0
  mov	r5, r4
  str	r4, [fp, #-4]
  vmov	s16, r5
  vmov.f32	s17, s16
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
vstr s16, [fp, #-8] vcvt.f32.s32 s16, s17 vstr s16, [fp, #-12] movw r4, #4059 str r4, [fp, #-16] movt r4, #16457 mov r5, r4 str r4, [fp, #-16] mov r4, r5 mov r5, r4 str r4, [fp, #-20] vmov s16, r5 vmov.f32 s17, s16 vstr s16, [fp, #-24] vldr s18, [fp, #-12] vmul.f32 s16, s17, s18 vstr s16, [fp, #-28] ldr r5, [fp, #-4] vmov s16, r5 vmov.f32 s17, s16 vstr s16, [fp, #-32] vcvt.f32.s32 s16, s17 vstr s16, [fp, #-36] vldr s17, [fp, #-28] vldr s18, [fp, #-36] vmul.f32 s16, s17, s18 vstr s16, [fp, #-40] ldr r5, [fp, #-4] ldr r6, [fp, #-4] mul r4, r5, r5 mov r5, r4 str r4, [fp, #-44] vmov s16, r5 vmov.f32 s17, s16 vstr s16, [fp, #-48] vcvt.f32.s32 s16, s17 vstr s16, [fp, #-52] movw r4, #4059 str r4, [fp, #-56] movt r4, #16457 mov r5, r4 str r4, [fp, #-56] mov r4, r5 mov r5, r4 str r4, [fp, #-60] vmov s16, r5 vstr s16, [fp, #-64] vldr s17, [fp, #-52] vldr s18, [fp, #-64] vmul.f32 s16, s17, s18 vstr s16, [fp, #-68] vldr s17, [fp, #-40] vldr s18, [fp, #-68] vadd.f32 s16, s17, s18 vstr s16, [fp, #-72] mov r4, #2 mov r5, r4 str r4, [fp, #-76] vmov s16, r5 vmov.f32 s17, s16 vstr s16, [fp, #-80] vcvt.f32.s32 s16, s17 vstr s16, [fp, #-84] vldr s17, [fp, #-72] vldr s18, [fp, #-84] vdiv.f32 s16, s17, s18 vmov.f32 s17, s16 vstr s16, [fp, #-88] vmov.f32 s0, s17 add sp, sp, #92