您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ EmitLn函数代码示例

51自学网 2021-06-01 20:37:10
  C++
这篇教程C++ EmitLn函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中EmitLn函数的典型用法代码示例。如果您正苦于以下问题:C++ EmitLn函数的具体用法?C++ EmitLn怎么用?C++ EmitLn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了EmitLn函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: Add

void Add(){    Match('+');    Term();    EmitLn("addl (%esp), %eax");    EmitLn("addl $4, %esp");}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:7,


示例2: DoFor

void DoFor() {  char L1[100];  char L2[100];  Match('f');  strcpy(L1, NewLabel());  strcpy(L2, NewLabel());  char Name = GetName();  Match('=');  Expression();  EmitLn("dec rax");  sprintf(tmp, "mov qword [%c], rax", Name);  EmitLn(tmp);  Expression();  EmitLn("push rax");  PostLabel(L1);  sprintf(tmp, "mov rax, qword [%c]", Name);  EmitLn(tmp);  EmitLn("inc rax");  sprintf(tmp, "mov qword [%c], rax", Name);  EmitLn(tmp);  EmitLn("cmp rax, qword [rsp]");  sprintf(tmp, "jg %s", L2);  EmitLn(tmp);  Block();  Match('e');   sprintf(tmp, "jmp %s", L1);  EmitLn(tmp);  PostLabel(L2);  EmitLn("add rsp, 8");}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:33,


示例3: DoWhile

void DoWhile(void){        char code[MAXMSG];        char l1[MAXLBL];        char l2[MAXLBL];        Match('w');        NewLabel();        strncpy(l1, label, MAXLBL);	NewLabel();        strncpy(l2, label, MAXLBL);        PostLabel(l1);	BoolExpression();        snprintf(code, MAXMSG, "je .%s", l2);        EmitLn(code);	Block(l2);	Match('e'); // ENDWHILE	printf("#ENDWHILE/n");	snprintf(code, MAXMSG, "jmp .%s", l1);	EmitLn(code);	PostLabel(l2);}
开发者ID:Harnesser,项目名称:LetsBuildACompiler,代码行数:26,


示例4: DoIf

void DoIf(){    Condition();    char L1[MAX_BUF];    char L2[MAX_BUF];    strcpy(L1, NewLabel());    strcpy(L2, L1);    sprintf(tmp, "jz %s", L1);    EmitLn(tmp);    Block();    if (Token == 'l') {        /* match *else* statement */        strcpy(L2, NewLabel());        sprintf(tmp, "jmp %s", L2);        EmitLn(tmp);        PostLabel(L1);        Block();    }    PostLabel(L2);    MatchString("ENDIF");}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:28,


示例5: Subtract

void Subtract() {  Match('-');  Term();  EmitLn("pop rbx");  EmitLn("sub rax, rbx");  EmitLn("neg rax");}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:7,


示例6: BoolXor

void BoolXor(){    Match('~');    BoolTerm();    EmitLn("xor (%esp), %eax");    EmitLn("addl $4, %esp");    /* recover the stack */}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:7,


示例7: DoDo

void DoDo(void){        char code[MAXMSG];        char l1[MAXLBL];        char l2[MAXLBL];        Match('d');        NewLabel();        strncpy(l1, label, MAXLBL);        NewLabel();        strncpy(l2, label, MAXLBL); // exit point	printf("# DO/n");	Expression(); // expr1 = repeat count	EmitLn("pushl %eax/t/t# repeat count");        PostLabel(l1);	Block(l2);	EmitLn("popl %ecx");	EmitLn("dec %ecx");	EmitLn("pushl %ecx");	// test        snprintf(code, MAXMSG, "jnz .%s", l1);        EmitLn(code);		Match('e'); // ENDWHILE	printf("#ENDDO/n");	PostLabel(l2);}
开发者ID:Harnesser,项目名称:LetsBuildACompiler,代码行数:31,


示例8: Greater

void Greater() {  Match('>');  Expression();  EmitLn("cmp rax, [rsp]");  EmitLn("setle al");}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:7,


示例9: DoIf

void DoIf(char *exit_label){        char code[MAXMSG];	char l1[MAXLBL];	char l2[MAXLBL];	Match('i');	printf("# IF/n");	NewLabel();	strncpy(l1, label, MAXLBL);	strncpy(l2, label, MAXLBL);	BoolExpression();        snprintf(code, MAXMSG, "je .%s", l1);	EmitLn(code);	printf("# TRUE/n");	// here, tutorial 05 only matches 'e' once, after the if statement	// this doesn't seem to work unless i add Look=='l' to the test in	// Blocks().	Block(exit_label);	if (Look=='l') {		Match('l');		printf("#ELSE/n");		NewLabel();		strncpy(l2, label, MAXLBL);		snprintf(code, MAXMSG, "jmp .%s", l2); 		EmitLn(code);		PostLabel(l1);		Block(exit_label);	}	Match('e'); // ENDIF	printf("#ENDIF/n");	PostLabel(l2);}
开发者ID:Harnesser,项目名称:LetsBuildACompiler,代码行数:35,


示例10: Subtract

void Subtract(){    Match('-');    Term();    EmitLn("subl (%esp), %eax");    EmitLn("negl %eax");    EmitLn("addl $4, %esp");}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:8,


示例11: Multiply

void Multiply(){    Match('*');    Factor();    EmitLn("imull (%esp), %eax");    /* push of the stack */    EmitLn("addl $4, %esp");}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:8,


示例12: Greater

void Greater(){    Match('>');    Expression();    EmitLn("cmp %eax, (%esp)");    EmitLn("setg %al");    EmitLn("addl $4, %esp");     /* recover the stack */}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:8,


示例13: NotEquals

void NotEquals(){    Match('#');    Expression();    EmitLn("cmp (%esp), %eax");    EmitLn("setne %al");    EmitLn("addl $4, %esp");     /* recover the stack */}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:8,


示例14: Divide

void Divide() {  Match('/');  Factor();  EmitLn("mov rbx, rax");  EmitLn("pop rax");  EmitLn("cqo");  EmitLn("idiv rbx");}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:8,


示例15: Less

void Less(){    Match('<');    Expression();    EmitLn("cmp %eax, (%esp)");    EmitLn("setl %al");    EmitLn("addl $4, %esp");     /* recover the stack */}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:8,


示例16: Header

void Header() {  EmitLn("extern printf");  EmitLn("extern scanf");  EmitLn("section .data");  printf("fmt:	db /"%%d/", 10, 0/n");  printf("fmtin:	db /"%%d/", 0/n");}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:8,


示例17: Assignment

void Assignment(){    char c = GetName();    Match('=');    BoolExpression();    sprintf(tmp, "lea %c, %%ebx", c);    EmitLn(tmp);    EmitLn("movl %eax, (%ebx)");}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:9,


示例18: Equals

void Equals(){    Match('=');    Expression();    EmitLn("cmp (%esp), %eax");    /* Note that 80386 has setcc corresponds to 86000's SETCC     * However, it only takes 8-bit registers */    EmitLn("sete %al");    EmitLn("addl $4, %esp");     /* recover the stack */}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:10,


示例19: BoolTerm

void BoolTerm() {  NotFactor();  while (Look == '&') {    EmitLn("push rax");    Match('&');    NotFactor();    EmitLn("and rax, [rsp]");    EmitLn("add rsp, 8");  }}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:10,


示例20: BoolTerm

void BoolTerm(){    NotFactor();    while(Look == '&') {        EmitLn("pushl %eax");        Match('&');        NotFactor();        EmitLn("and (%esp), %eax");        EmitLn("addl $4, %esp");    }}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:11,


示例21: BoolFactor

void BoolFactor(){    if (IsBoolean(Look)) {        if (GetBoolean()) {            EmitLn("movl $-1, %eax");        } else {            EmitLn("xor %eax, %eax");        }    } else {        Relation();    }}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:12,


示例22: Ident

void Ident() {  char Name = GetName();  if(Look == ('(')) {    Match('(');    Match(')');    sprintf(tmp, "call %c", Name);    EmitLn(tmp);  } else {    sprintf(tmp, "mov rax, [%c]", Name);    EmitLn(tmp);  }}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:12,


示例23: Ident

void Ident(){    GetName();    if (Look == '(') {        Match('(');        Match(')');        sprintf(tmp, "call %s", Value);        EmitLn(tmp);    } else {        sprintf(tmp, "movl %s, %%eax", Value);        EmitLn(tmp);    }}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:13,


示例24: BoolFactor

void BoolFactor() {  if(IsBoolean(Look)) {    if(GetBoolean()) {      EmitLn("mov rax, -1");    }    else {      EmitLn("xor rax, rax");    }  }  else {    Relation();  }}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:13,


示例25: Relation

void Relation() {  Expression();  if (IsRelop(Look)) {    EmitLn("push rax");    switch(Look) {      case '=': Equals(); break;      case '#': NotEquals(); break;      case '<': Less(); break;      case '>': Greater(); break;    }    EmitLn("add rsp, 8");    EmitLn("cmp rax, 0");  }}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:14,


示例26: CleanStack

/* Adjust the stack pointer upwards by n bytes */void CleanStack(int bytes){    if (bytes > 0) {        sprintf(tmp, "addl $%d, %%esp", bytes);        EmitLn(tmp);    }}
开发者ID:A-deLuna,项目名称:Let-s-build-a-compiler,代码行数:8,


示例27: Assignment

void Assignment() {  char Name = GetName();  Match('=');  BoolExpression();  sprintf(tmp, "mov [%c], rax", Name);  EmitLn(tmp);}
开发者ID:A-deLuna,项目名称:crenshaw-c-x86_64-compiler,代码行数:7,



注:本文中的EmitLn函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ EmitSound函数代码示例
C++ EmitBYTE函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。