标签: code-generation

(x86)汇编程序优化

我正在为Java构建针对Windows的x86-32(IA32)处理器的编译器/汇编器/链接器.

高级概念(我没有任何"源代码":没有语法或词汇翻译,所有语言都是常规的)被翻译成操作码,然后将其包装并输出到文件中.翻译过程有几个阶段,一个是常规语言之间的翻译:最高级别的代码被翻译成中级代码,然后被翻译成最低级别的代码(可能超过3个级别).

我的问题如下; 如果我有更高级别的代码(XY)转换为较低级代码(x,y,UV),那么这样的翻译的一个例子是,在伪代码:

x + U(f) // generated by X
+
V(f) + y // generated by Y
Run Code Online (Sandbox Code Playgroud)

(一个简单的例子)在哪里V是相反的U(与堆栈推送U和pop相比V).这需要"优化"为:

x + y
Run Code Online (Sandbox Code Playgroud)

(基本上删除"无用的"代码)

我的想法是使用正则表达式.对于上面的情况,它将是一个看起来像这样的正则表达式:x:(U(x)+V(x)):null,意思是所有x查找U(x)后跟V(x)和替换null.想象一下更复杂的正则表达式,用于更复杂的优化.这应该适用于所有级别.

你有什么建议?什么是优化和生产快速x86组件的好方法?

optimization assembly code-generation

2
推荐指数
2
解决办法
1818
查看次数

生成简单的CRUD存储过程

我正在开发一个符合某些与SQL实现相关的公司标准的项目.具体来说,只能通过存储过程访问所有SQL Server内容.(没有ORM或LINQ.)

我们需要的80%或更多可以通过基本的CRUD(CREATE,READ,UPDATE,DELETE)类型的过程来处理,该过程应该相当简单.但是,到目前为止,我找不到能够生成这些相当简单的"基本"存储过程的现有工具.

那么,有人能指出我可以用来生成大部分所需程序的工具吗?优选地,允许对过程进行一些定制,例如将语句包装在基本BEGIN/END TRY构造中.

谢谢.

sql-server code-generation stored-procedures

2
推荐指数
1
解决办法
3742
查看次数

在C中,将struct作为参数传递给printf的预期行为是什么?

第二次尝试

好吧,也许我第一次尝试提问这个问题太混乱了.所以,我们再来一次......

在一个带有可变数量参数的函数中,比如printf,当你传递一个struct时,你应该期望生成什么样的代码?

基于这段代码,我问这个问题:

#include <stdio.h>

struct edge{
    int v1, v2;
};

int main(void){
    struct edge edges;

    edges.v1=5;
    edges.v2=20;

    printf("'%d'\n",  edges);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的Windows框中编译时,它传递2个整数参数:

    .file   "simple_test_case2.c"
    .def    ___main;    .scl    2;  .type   32; .endef
    .section .rdata,"dr"
LC0:
    .ascii "'%d'\12\0"
    .text
.globl _main
    .def    _main;  .scl    2;  .type   32; .endef
_main:
    pushl   %ebp
    movl    %esp, %ebp
    andl    $-16, %esp
    subl    $32, %esp
    call    ___main
    movl    $5, 24(%esp)
    movl    $20, 28(%esp)
    movl    24(%esp), %eax
    movl    28(%esp), %edx
    movl    %eax, 4(%esp) …
Run Code Online (Sandbox Code Playgroud)

c gcc struct code-generation

2
推荐指数
1
解决办法
1228
查看次数

Objective-C运行时代码生成

我想创建一个Objective-C应用程序,它允许您在运行时指定类实现.

我希望用户输入一些代码(代码的正确性现在超出了范围).当用户完成后,我想创建一个类型化的代码类并在应用程序中使用它.

所以我想在应用程序的运行时动态添加代码.这可能吗?如果是这样,我怎么能实现这一目标?如果没有,为什么不,并且有没有其他选择来创造我想创造的相同效果?

谢谢.

code-generation runtime objective-c

2
推荐指数
1
解决办法
1219
查看次数

在Haskell中编写Perl代码生成器有哪些步骤?

鉴于Perl 5不符合BNF,我对如何思考这个问题感到茫然.有人可以提出一些建议让我以正确的方式考虑这个问题吗?

haskell code-generation

2
推荐指数
1
解决办法
242
查看次数

t4模板每个模板TransformOnBuild设置

我希望在构建项目时自动执行一个.tt文件,而不是其他文件.是否可以在特定的.tt文件而不是项目范围上设置TransformOnBuild属性?或另一种方法来实现这一目标?

t4 code-generation visual-studio-2010

2
推荐指数
1
解决办法
1310
查看次数

LLVM本机代码生成

如何使用llvm生成本机代码?

如果可能,可以使用Haskell绑定吗?

upd:我的意思是生成不在内存中的代码,我的意思是如何生成代码,例如将其保存到文件中.

haskell code-generation llvm

2
推荐指数
1
解决办法
578
查看次数

代码生成

编译器如何生成单独文件的二进制代码?对GCC源代码中的哪些文件的引用会对此有所帮助.我想知道的是编译器(特别是gcc)究竟是如何从ASM生成机器代码的?

compiler-construction code-generation

2
推荐指数
2
解决办法
500
查看次数

罗斯林创建自定义表达式

我正在玩roslyn generation,它工作正常,除非不是这样。例如,我想使用C#7.0功能throw expression。但是我在中没有看到任何相应的方法SyntaxFactory

现在可以生成类似的东西var foo = bar ?? throw new Exception();吗?由于NullCoalesceExpression扩展ExpressionSyntax,而ThrowStatement显然是一个声明。

我试图从头开始构建它(这就是我的意思custom expression),但是我只有多个例外Unexpected SyntaxKind

.net c# code-generation roslyn c#-7.0

2
推荐指数
1
解决办法
677
查看次数

将可选属性表示为C++类成员

我正在基于模式生成C++代码.存在实体,每个实体包含具有相应数据类型的每个属性的属性.现在问题是这些属性中的一些是"可选的",这意味着它们不必是类声明的一部分.但是,在C++中,某些东西要么是类的成员,要么不是类的成员,没有诸如"可选数据成员"之类的概念.

实体将是类名,属性将是类成员.我不确定如何表示标记为"可选"现有C++概念的属性.

c++ schema code-generation class

2
推荐指数
1
解决办法
783
查看次数