📄 prologue.h
字号:
////////////////////////////////////////////////////////////////////////////////// prologue.h -- assembly-language to be prefixed to output//// one for spim; one for SGI machines.//const char sgi_prologue[] ="\t# FOR USE WITH THE SGI ASSEMBLER! (IRIX 4)\n\\t# This file has been generated by the PL/0 compiler.\n\\n\ .verstamp 3 10\n\ .option pic1\n\ .lcomm i 4\n\ .sdata \n\ .align 2\n\ .align 0\n\$$5:\n\ .ascii \"%d\\X0A\\X00\"\n\ .sdata \n\ .align 2\n\ .align 0\n\$$9:\n\ .ascii \"%d\\X00\"\n\ .sdata \n\ .align 2\n\ .align 0\n\$$13:\n\ .ascii \"Start.\\X0A\\X00\"\n\ .sdata \n\ .align 2\n\ .align 0\n\$$16:\n\ .ascii \"End.\\X0A\\X00\"\n\ .text \n\ .align 2\n\ .file 2 \"prologue.c\"\n\ .loc 2 4\n\ # 1 static int i;\n\ # 2 \n\ # 3 static void output(int n)\n\ # 4 {\n\ .ent output 2\n\output:\n\ .option O1\n\ subu $sp, 48\n\ sw $31, 28($sp)\n\ sw $4, 48($sp)\n\ .mask 0x80000000, -20\n\ .frame $sp, 48, $31\n\ .loc 2 5\n\ # 5 printf(\"%d\n\", n);\n\ la $4, $$5\n\ lw $5, 48($sp)\n\ .livereg 0x0C00000E,0x00000000\n\ jal printf\n\ .loc 2 6\n\ # 6 }\n\ .livereg 0x0000FF0E,0x00000FFF\n\ lw $31, 28($sp)\n\ addu $sp, 48\n\ j $31\n\ .end output\n\ .text \n\ .align 2\n\ .file 2 \"prologue.c\"\n\ .loc 2 9\n\ # 7 \n\ # 8 static int input()\n\ # 9 {\n\ .ent input 2\n\input:\n\ .option O1\n\ subu $sp, 96\n\ sw $31, 28($sp)\n\ .mask 0x80000000, -68\n\ .frame $sp, 96, $31\n\ .loc 2 12\n\ # 10 void *r3,*r8,*r9,*r10,*r11,*r12,*r13,*r14,*r15,*r24,*r25;\n\ # 11 int temp;\n\\n\ # save temporary regs\n\ sw $3, 92($sp)\n\ sw $8, 88($sp)\n\ sw $9, 84($sp)\n\ sw $10, 80($sp)\n\ sw $11, 76($sp)\n\ sw $12, 72($sp)\n\ sw $13, 68($sp)\n\ sw $14, 64($sp)\n\ sw $15, 60($sp)\n\ sw $24, 56($sp)\n\ sw $25, 52($sp)\n\\n\ .loc 2 15\n\ # 15 scanf(\"%d\", &temp);\n\ la $4, $$9\n\ addu $5, $sp, 48\n\ .livereg 0x0C00000E,0x00000000\n\ jal scanf\n\ .loc 2 16\n\ # 16 return temp;\n\ lw $2, 48($sp)\n\\n\ # restore temporary regs\n\ lw $3, 92($sp)\n\ lw $8, 88($sp)\n\ lw $9, 84($sp)\n\ lw $10, 80($sp)\n\ lw $11, 76($sp)\n\ lw $12, 72($sp)\n\ lw $13, 68($sp)\n\ lw $14, 64($sp)\n\ lw $15, 60($sp)\n\ lw $24, 56($sp)\n\ lw $25, 52($sp)\n\\n\ .livereg 0x2000FF0E,0x00000FFF\n\ lw $31, 28($sp)\n\ addu $sp, 96\n\ j $31\n\ .end input\n\ .text \n\ .align 2\n\ .file 2 \"prologue.c\"\n\ .globl main\n\ .loc 2 22\n\ # 17 }\n\ # 18 \n\ # 19 void start();\n\ # 20 \n\ # 21 main()\n\ # 22 {\n\ .ent main 2\n\main:\n\ .option O1\n\ subu $sp, 48\n\ sw $31, 28($sp)\n\ .mask 0x80000000, -20\n\ .frame $sp, 48, $31\n\ .loc 2 23\n\ # 23 printf(\"Start.\\n\");\n\ la $4, $$13\n\ .livereg 0x0800000E,0x00000000\n\ jal printf\n\ .loc 2 24\n\ # 24 start();\n\ .livereg 0x0000000E,0x00000000\n\ jal start\n\ .loc 2 25\n\ # 25 printf(\"End.\\n\");\n\ la $4, $$16\n\ .livereg 0x0800000E,0x00000000\n\ jal printf\n\ .loc 2 26\n\ # 26 }\n\ move $2, $0\n\ .livereg 0x2000FF0E,0x00000FFF\n\ lw $31, 28($sp)\n\ addu $sp, 48\n\ j $31\n\ .end main\n\\n\ ######################################### end of the prologue";const char spim_prologue[] ="\t# FOR USE WITH THE SPIM SIMULATOR!\n\\t# This file has been generated by the PL/0 compiler.\n\\n\ .data\n\startmsg:\n\ .asciiz \"Start.\\n\"\n\endmsg: .asciiz \"End.\\n\"\n\nlmsg: .asciiz \"\\n\"\n\ioret: .word 0\n\regs: .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n\ .text\n\ .globl main\n\\n\ .ent main\n\main:\n\ li $v0, 4\n\ la $a0, startmsg\n\ syscall\n\\n\ # jump to the code generated by the compiler.\n\ jal start\n\\n\ li $v0, 4\n\ la $a0, endmsg\n\ syscall\n\\n\ li $v0, 10\n\ syscall\n\ .end main\n\\n\ # write a number to stdout\n\ .ent output\n\output:\n\ li $v0, 1\n\ syscall\n\ li $v0, 4\n\ la $a0, nlmsg\n\ syscall\n\ jr $31\n\ .end output\n\\n\ # read a number from stdin.\n\ # TEMPORARY REGS MUST BE PRESERVED!\n\ .ent input\n\input:\n\ sw $3, regs + 0\n\ sw $8, regs + 4\n\ sw $9, regs + 8\n\ sw $10, regs + 12\n\ sw $11, regs + 16\n\ sw $12, regs + 20\n\ sw $13, regs + 24\n\ sw $14, regs + 28\n\ sw $15, regs + 32\n\ sw $24, regs + 36\n\ sw $25, regs + 40\n\ li $v0, 5\n\ syscall\n\ lw $3, regs + 0\n\ lw $8, regs + 4\n\ lw $9, regs + 8\n\ lw $10, regs + 12\n\ lw $11, regs + 16\n\ lw $12, regs + 20\n\ lw $13, regs + 24\n\ lw $14, regs + 28\n\ lw $15, regs + 32\n\ lw $24, regs + 36\n\ lw $25, regs + 40\n\ jr $31\n\ .end input\n\\n\ ######################################### end of the prologue";// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -