?? win32.md
字號(hào):
%{
enum { EAX=0, ECX=1, EDX=2, EBX=3, ESI=6, EDI=7 };
#include "c.h"
#define NODEPTR_TYPE Node
#define OP_LABEL(p) ((p)->op)
#define LEFT_CHILD(p) ((p)->kids[0])
#define RIGHT_CHILD(p) ((p)->kids[1])
#define STATE_LABEL(p) ((p)->x.state)
static void address ARGS((Symbol, Symbol, int));
static void blkfetch ARGS((int, int, int, int));
static void blkloop ARGS((int, int, int, int, int, int[]));
static void blkstore ARGS((int, int, int, int));
static int ckstack ARGS((Node, int));
static void defaddress ARGS((Symbol));
static void defconst ARGS((int, Value));
static void defstring ARGS((int, char *,int));
static void defsymbol ARGS((Symbol));
static void doarg ARGS((Node));
static void emit0 ARGS((Node));
static void emit2 ARGS((Node));
static void export ARGS((Symbol));
static void clobber ARGS((Node));
static void function ARGS((Symbol, Symbol [], Symbol [], int));
static void global ARGS((Symbol));
static void import ARGS((Symbol));
static void local ARGS((Symbol));
static void progbeg ARGS((int, char **));
static void progend ARGS((void));
static void segment ARGS((int));
static void space ARGS((int));
static void target ARGS((Node));
static int memop ARGS((Node));
static int hasargs ARGS((Node));
#ifndef ASM_LIB
static int sametree ARGS((Node, Node));
#else
extern int sametree ARGS((Node,Node));
#endif
static int iscon16(Node);
static int immediateOpShort(Node);
static int iszero(Node);
static int incrmem(Node);
Symbol charreg[32], shortreg[32], intreg[32];
static Symbol fltreg[32];
int cseg;
static int dequal(Node,int);
static int fequal(Node,int);
static Symbol quo, rem;
%}
%start stmt
%term CNSTC= 19
%term CNSTD= 18
%term CNSTF= 17
%term CNSTI= 21
%term CNSTP= 24
%term CNSTS= 20
%term CNSTU= 23
%term CNSTL= 22
%term ARGB= 42
%term ARGD= 34
%term ARGF= 33
%term ARGI= 37
%term ARGP= 40
%term ARGL= 38
%term ASGNB= 58
%term ASGNC= 51
%term ASGND= 50
%term ASGNF= 49
%term ASGNI= 53
%term ASGNS= 52
%term ASGNP= 56
%term ASGNL= 54
%term INDIRB= 74
%term INDIRC= 67
%term INDIRD= 66
%term INDIRF= 65
%term INDIRI= 69
%term INDIRS= 68
%term INDIRL= 70
%term INDIRP= 72
%term CVC= 80
%term CVCI= 85
%term CVCU= 87
%term CVD= 96
%term CVDF= 97
%term CVDI= 101
%term CVDL= 102
;;
;;%term CVF= 112
;;
%term CVFD= 114
;;
;;%term CVI= 128
;;
%term CVIC= 131
%term CVID= 130
%term CVIS= 132
%term CVIL= 134
;;
;; discontinued
;; %term CVIU=135
;; %term CVUI= 181
;; %term CVPU=151
;; %term = CVUI=181
;; %term CVUP=184
;;
;;%term CVP= 144
;;
;;%term CVS= 160
;;
%term CVSI= 165
%term CVSU= 167
;;
;;%term CVU= 176
;;
%term CVUD= 178
%term CVUC= 179
%term CVUL= 182
%term CVUS= 180
;;
;;%term NEG= 192
;;
%term NEGD= 194
%term NEGF= 193
%term NEGI= 197
%term NEGL= 198
;;
;;%term CALL= 208
;;
%term CALLB= 218
%term CALLD= 210
%term CALLF= 209
%term CALLI= 213
%term CALLV= 217
%term CALLL= 214
;;
;;%term LOAD= 224
;;
;;%term LOADB= 234
;;
%term LOADC= 227
%term LOADD= 226
%term LOADF= 225
%term LOADI= 229
%term LOADP= 232
%term LOADS= 228
%term LOADU= 231
;;
;;%term RET= 240
;;
%term RETD= 242
%term RETL= 246
%term RETF= 241
%term RETI= 245
;;
;;%term ADDRG= 256
;;
%term ADDRGP= 264
;;
;;%term ADDRF= 272
;;
%term ADDRFP= 280
;;
;;%term ADDRL= 288
;;
%term ADDRLP= 296
%term ADDD= 306
%term ADDF= 305
%term ADDI= 309
%term ADDP= 312
%term ADDU= 311
%term ADDL= 310
%term SUBD= 322
%term SUBF= 321
%term SUBI= 325
%term SUBP= 328
%term SUBU= 327
%term SUBL= 326
%term LSHI= 341
%term LSHU= 343
%term LSHL= 342
%term MODI= 357
%term MODU= 359
%term MODL= 358
%term RSHI= 373
%term RSHU= 375
%term RSHL= 374
%term BANDU= 391
%term BANDL= 390
%term BCOML= 406
%term BCOMU= 407
%term BORL= 422
%term BORU= 423
%term BXORL= 438
%term BXORU= 439
%term DIVD= 450
%term DIVF= 449
%term DIVI= 453
%term DIVL= 454
%term DIVU= 455
%term MULD= 466
%term MULF= 465
%term MULI= 469
%term MULL= 470
%term MULU= 471
%term EQD= 482
%term EQF= 481
%term EQLO= 486
%term EQI= 485
%term GED= 498
%term GEF= 497
%term GEI= 501
%term GEU= 503
%term GEL= 502
%term GTD= 514
%term GTF= 513
%term GTI= 517
%term GTU= 519
%term GTL= 518
%term LED= 530
%term LEF= 529
%term LEI= 533
%term LEL= 534
%term LEU= 535
%term LTD= 546
%term LTF= 545
%term LTI= 549
%term LTL= 550
%term LTU= 551
%term NED= 562
%term NEF= 561
%term NEI= 565
%term NEL= 566
%term JUMPI= 581
%term JUMPV= 585
%term LABELV= 601
%term CVLI= 613
%term CVLD= 610
%term VREGP= 616
%%
reg: INDIRC(VREGP) "# read register\n"
reg: INDIRI(VREGP) "# read register\n"
reg: INDIRP(VREGP) "# read register\n"
reg: INDIRS(VREGP) "# read register\n"
freg: INDIRD(VREGP) "# read register\n"
freg: INDIRF(VREGP) "# read register\n"
stmt: ASGNC(VREGP,reg) "# write register\n"
stmt: ASGNI(VREGP,reg) "# write register\n"
stmt: ASGNP(VREGP,reg) "# write register\n"
stmt: ASGNS(VREGP,reg) "# write register\n"
stmt: ASGND(VREGP,freg) "# write register\n"
stmt: ASGNF(VREGP,freg) "# write register\n"
con: CNSTC "$%a"
con: CNSTI "$%a"
con: CNSTP "$%a"
con: CNSTS "$%a"
con: CNSTU "$%a"
stmt: reg ""
stmt: freg ""
;;reg: CVIU(reg) "%0" notarget(a)
;;reg: CVPU(reg) "%0" notarget(a)
;;reg: CVUI(reg) "%0" notarget(a)
;;reg: CVUP(reg) "%0" notarget(a)
acon: ADDRGP "%a"
acon: CNSTC "%a"
acon: CNSTI "%a"
acon: CNSTP "%a"
acon: CNSTS "%a"
acon: CNSTU "%a"
baseaddr: ADDRGP "%a"
base: reg "(%0)"
base: ADDI(reg,acon) "%1(%0)"
base: ADDP(reg,acon) "%1(%0)"
base: ADDU(reg,acon) "%1(%0)"
base: ADDRFP "%a(%%ebp)"
base: ADDRLP "%a(%%ebp)"
con1: CNSTI "1" (a->syms[0]->u.c.v.i == 1 ? 0 : LBURG_MAX)
con1: CNSTU "1" (a->syms[0]->u.c.v.u == 1 ? 0 : LBURG_MAX)
icon: CNSTI "2" (a->syms[0]->u.c.v.i == 1 ? 0 : LBURG_MAX)
icon: CNSTU "2" (a->syms[0]->u.c.v.u == 1 ? 0 : LBURG_MAX)
icon: CNSTI "4" (a->syms[0]->u.c.v.i == 2 ? 0 : LBURG_MAX)
icon: CNSTU "4" (a->syms[0]->u.c.v.u == 2 ? 0 : LBURG_MAX)
icon: CNSTI "8" (a->syms[0]->u.c.v.i == 3 ? 0 : LBURG_MAX)
icon: CNSTU "8" (a->syms[0]->u.c.v.u == 3 ? 0 : LBURG_MAX)
index: reg "%0"
index: LSHI(reg,icon) "%0,%1"
index: LSHU(reg,icon) "%0,%1"
addr: base "%0" 1
addr: baseaddr "%0"
addr: ADDI(index,baseaddr) "%1(,%0)"
addr: ADDI(reg,baseaddr) "%1(%0)"
addr: ADDI(index,reg) "(%1,%0)"
addr: ADDP(index,baseaddr) "%1(,%0)"
addr: ADDP(reg,baseaddr) "%1(%0)"
addr: ADDP(reg,acon) "%1(%0)"
addr: ADDP(index,reg) "(%1,%0)"
addr: ADDU(index,baseaddr) "%1(,%0)"
addr: ADDU(reg,baseaddr) "%1(%0)"
addr: ADDU(index,reg) "(%1,%0)"
addr: ADDU(index,acon) "%1(,%0)"
addr: index "(,%0)"
memb: INDIRC(addr) "%0"
memw: INDIRS(addr) "%0"
mem: INDIRI(addr) "%0"
mem: INDIRP(addr) "%0"
rc5: CNSTI "$%a" range(a, 0, 31)
rc5: reg "%%cl"
rc: reg "%0"
rc: con "%0"
mr: reg "%0"
mr: mem "%0"
mrb: reg "%0"
mrb: memb "%0"
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -