首页 文章
  • 4 votes
     answers
     views

    Mac上的Android Studio:无法找到系统编译器

    当我尝试编译“你好世界”时,我在我的一个Mac上得到这个 错误:任务':app:compileDebugJava'的执行失败 . 找不到System Java Compiler . 确保已安装JDK(而不仅仅是JRE)并将JAVA_HOME系统变量配置为指向相应目录 . 在我的另一台机器上,我没有任何问题 . 据我所知,设置是一样的 . 只是出于某种原因,在一台机器上,Android Stud...
  • 9 votes
     answers
     views

    位对齐空间和性能提升

    在书中,作者提到了一种减少数据结构大小和提高访问性能的技术 . 从本质上讲,它依赖于当成员变量与内存对齐时获得性能的事实 . 这是编译器可以利用的明显潜在优化,但通过确保每个变量对齐,它们最终会膨胀数据结构的大小 . 或者这至少是他的主张 . 他指出,真正的性能提升是通过使用你的大脑并确保你的结构设计得恰当,以利用速度提升同时防止编译器臃肿 . 他提供了以下代码段: #pragma pack( p...
  • 5 votes
     answers
     views

    任何将'char'视为'unsigned'的编译器?

    除非用户在文件或项目设置中明确提到,否则是否有任何C编译器将默认类型的char作为unsigned? / Kanu_
  • 3 votes
     answers
     views

    编译和ABI如何相关?

    编译和ABI如何相关? 编译器的唯一工作是为OS和/或其他应用程序构建应用程序二进制接口(ABI)吗? 关于ABI,引自Wikipedia: ABI涵盖数据类型,大小和对齐等细节;调用约定,它控制函数参数的传递方式并返回检索的值;系统调用号码以及应用程序应如何向操作系统发出系统调用;并且在完整的操作系统ABI的情况下,目标文件,程序库等的二进制格式 . 感谢致敬!
  • 28 votes
     answers
     views

    我应该担心英特尔C编译器为AMD发出次优代码?

    我们一直是英特尔商店 . 所有开发人员都使用英特尔机器,最终用户的推荐平台是英特尔,如果最终用户希望在AMD上运行,那就是他们的了望 . 也许测试部门有一台AMD机器在哪里检查我们没有运送任何完全损坏的东西,但那是关于它的 . 直到几年前我们才使用MSVC编译器,因为它并没有真正提供超出SSE级别的许多处理器调优选项,所以没有人担心代码是否有利于一个x86供应商而不是另一个 . 但是,最近我们一直...
  • 0 votes
     answers
     views

    用c语言的Winsock程序不起作用

    我已经启动了另一个在Windows7上用C语言运行Winsock的程序 . 我在msdn上找到了这个帮助:http://msdn.microsoft.com/en-us/library/windows/desktop/ms737591%28v=vs.85%29.aspx 此程序无法正常工作并显示以下错误: $ gcc ak1.c -o ak1.exe -lwsock32 -lws2_32 -lAd...
  • 64 votes
     answers
     views

    向.NET应用程序添加脚本功能

    我有一个用C#编写的小游戏 . 它使用数据库作为后端 . 这是trading card game,我想将卡的功能实现为脚本 . 我的意思是我基本上有一个接口, ICard ,卡类实现( public class Card056 : ICard )并包含游戏调用的函数 . 现在,为了使事物可维护/可修改,我想让每张卡的类作为数据库中的源代码,并在第一次使用时实际编译它 . 因此,当我必须添加/更换卡...
  • 3 votes
     answers
     views

    自修改代码算法

    某些程序在运行时生成可执行代码 . 即计算机病毒,包装二进制 . 这使得静态分析非常困难 . 除了打包算法,是否有任何通用的自修改代码生成算法?还是编译支持?我在哪里可以获得相关文件或纸张?自修改代码和多态代码有什么区别? 我好奇 . 先感谢您 .
  • 6 votes
     answers
     views

    Scheme编译器Stalin中的全局类型推断

    我正在研究Scheme编译器Stalin . 它既大又复杂 . 此外,如果我理解正确,作者正计划撰写一系列详细介绍实施方面的论文,但从未接触过这样做 . 我感兴趣的斯大林方面是全局类型推断:根据它们在程序中其他地方的用法来推断事物的类型 . 斯大林确实这样做了吗?如果是,如何以及在其代码库中的位置?它是否使用Hindley-Milner算法的变体/扩展?
  • 3 votes
     answers
     views

    为CLR实现功能语言(或者,关于F#实现的论文)

    有谁知道关于F#编译器实现的任何好文章?我正在尝试为针对CLR的简单函数语言生成CIL代码,但我正在努力解决几个方面问题 . 功能语言和CIL之间的差异使得很难生成良好类型的CIL代码 . 我有通过类型擦除工作的解决方案,但我更愿意找到一种方法来生成CIL代码,该代码反映(至少在某种程度上)我的源语言的Hindley-Milner类型系统(例如,通过生成泛型类) . 根据MS和Mono F#编译器...
  • 26 votes
     answers
     views

    委托Roslyn中的缓存行为更改

    给出以下代码: public class C { public void M() { var x = 5; Action<int> action = y => Console.WriteLine(y); } } 使用VS2013,.NET 4.5 . 查看反编译代码时,我们可以看到编译器在调用站点缓存委托: public ...
  • 1 votes
     answers
     views

    仅发出长跳转指令而不是LLVM的短跳转指令

    是否有任何简单的方法可以使LLVM不发出1字节位移的短跳转指令,如 75 30 JNE +30 , eb 1a JMP +1a 等;相反,在x86_64架构下只发出3字节零填充的4字节位移跳转指令,如 0f 85 30 00 00 00 JNE +30 , e9 1a 00 00 00 JMPQ +1a 等? 显然,这会增加代码大小 .
  • 19 votes
     answers
     views

    Haskell - 如何最好地表示编程语言的语法?

    我一直在研究Haskell,我非常想在其中编写一个编译器(作为一种学习练习),因为它的许多先天特性可以很容易地应用于编译器(特别是一个递归的体面编译器) . 我无法理解的是如何用Haskell-ian方式表示语言的语法 . 我的第一个想法是使用递归数据类型定义,但我看不出如何使用它们来匹配语言中的关键字(“if”) . 非常感谢的想法和建议, 皮特
  • 9 votes
     answers
     views

    为什么编译器添加一个不必要的局部变量

    这个C#代码: private void LoadAssignments(AssignmentType assignmentType, Collection<Assignment> assignments) { bool flag; DataTable lessons = this.GetResults(assignmentType); ...
  • 27 votes
     answers
     views

    编译语言可以同音吗?

    根据定义,homoiconic这个词的意思是: 代码和数据的相同表示 在LISP中,这意味着您可以使用带引号的列表并对其进行评估,因此 (car list) 将是函数和 (cdr list) 参数 . 这可以在编译时或在运行时发生,但是它需要解释器 . 没有编译时解释器的编译语言是否也可能是homoiconic?或者说同性恋的概念仅限于口译员?
  • 2 votes
     answers
     views

    是否有用于生成自修改代码的简单处理器上的高级语言的现代编译器?

    回到缓存和分支预测之前的日子,如果不鼓励为某些类型的优化制作自修改代码,则相对常见 . 这可能是在8位到32位之前的汇编程序中使用汇编编写的游戏和演示中最常见的,例如Amiga . 我不确定那些日子里是否有任何编译器发出自修改汇编程序或机器代码 . 我想知道的是,是否有任何当前/现代编译器 . 显然,在具有缓存的强大处理器上它将是无用的或太难 . 但是如嵌入式系统中使用的那么多简单处理器呢?对于任...
  • 21 votes
     answers
     views

    为什么我没有收到关于未初始化的只读字段的警告?

    如果您忘记初始化私有或内部的只读成员,或者声明它的类是内部的,那么C#编译器就足以为您提供“永远不会分配字段”警告 . 但如果该类是公开的,并且只读成员是公共的,受保护的或内部保护的,那么就没有警告! 有谁知道为什么? 示例代码,用于说明发出警告的条件以及未发出警告的条件: namespace Test1 { class Test1 { #if TRY_IT ...
  • 6 votes
     answers
     views

    泛型,重载解析和代理(对不起,找不到更好的 Headers )[重复]

    可能重复:为什么Func <T>与Func <IEnumerable <T >>不明确? 我注意到泛型的一个非常奇怪的重载解决问题...... 请考虑以下方法: static void Foo<TSource>(TSource element, Func<TSource, int> selector) { "int&...
  • 12 votes
     answers
     views

    定位JVM而不是x86有什么缺点?

    我正在开发一种新语言 . 我最初的目标是为Windows平台编译为原生x86,但现在我有疑问 . 我不能轻易地将每种语言都移植到JVM上;这样做可能会导致语言和设计的微小变化 . 在提出这个问题之后,我甚至怀疑这个决定 . 我现在知道一些"pro" JVM参数 . 最初的问题是:在为新语言创建编译器时,目标JVM是个好主意吗? 更新了问题: What are the disad...
  • 6 votes
     answers
     views

    基于JVM的语言/运行时如何生成Java字节码?

    JVM上有几种语言/运行时:例如 JRuby , Groovy , Jython , Clojure , Rhino , Scala 等等...... 这些 generate Java字节码怎么办? 这样做有标准化的 libraries 吗? 生成的字节码如何获得 executed ? (或者我的假设是错误的,并且一些提到的语言会生成 not 生成字节码?)
  • 7 votes
     answers
     views

    Clojure编译器如何生成JVM字节码?

    Clojure编译器(它只是一个jar / java应用程序)用什么库/ api来生成JVM字节码?我很好奇,因为字节码是在运行时由java而不是javac生成的,所以它是一个输出jvm字节码的java程序 .
  • 3 votes
     answers
     views

    如何创建自己的针对JVM的编程语言?

    我想创建自己的针对JVM的编程语言 . 我不确定该怎么做 . 我必须创建自己的编译器吗?所有编程语言都有独特的编译器,还是现有的编译器可以调整? 我找到了一些关于定位.NET CLI的信息 . 我还在编译器设计上找到了Dragon Book .
  • 4 votes
     answers
     views

    为JVM编写语言

    假设我编写了一种编程语言;对于同名,我会称之为 lang . 为了开始写作 lang 的漫长旅程,我决定开始写作lang . 我实际上无法运行它,因为没有什么可以运行自己运行的程序 . 所以我首先在Java中为 lang 编写另一个编译器 . 这一次,当我完成后,我决定将其转换为字节码,然后将其保留 . 我现在有一个工作的编译器,它将我的所有 lang 代码转换为字节码 . 所以我决定将我的自编...
  • 7 votes
     answers
     views

    将抽象语法树转换为字节代码

    我正在努力学习构建一个简单的编译器作为业余爱好 . 我的目标是Java虚拟机 . 我使用ANTLR插件为Eclipse编写了一个简单的语法 . 有人告诉我,Antlr生成的AST上有一个称为方法节点的东西,必须调用它 . 我打算用ASM生成字节码 . 那么什么是方法节点?如何从ASM调用它并使其访问方法指令? 那么编译器的语义分析器呢?应该手动编写还是有任何生成器?
  • 2 votes
     answers
     views

    除了ANTLR之外,还有哪些其他工具可以帮助我创建一个针对JVM的小语言? [关闭]

    (几天前我和ANTLR开始了我的语言冒险 . 我对语言理论和编译器构造的了解非常有限 . 如果这不是一个有效的问题,请原谅 . ) ANTLR是一个解析器生成器,具体来说,是一个 ALL(*) 解析器 . 根据here,解析器是: 编译器中试图对语法进行语法感知的部分 . AFAIK编译器应由5个阶段组成: 词法分析 语法分析 语义分析 IL表示和优化 代码生成 所以A...
  • 4 votes
     answers
     views

    Java编译器或JVM可以交换指令顺序的独立指令吗?

    我们采取以下声明: int d0, d1; int[] ds = {0, 0}; 现在一个线程有以下说明: d0++; d1++; 而另一个线程有这个指令: ds[1] = d1; ds[0] = d0; 如果我们并行运行这些线程,显然有三种组合 ds 可以看起来像:{0,0},{1,1}和{1,0} . 现在最大的问题是:还能有{0,1}吗?编译器/ JVM是否可以简单地交换指令,因为它认...
  • 46 votes
     answers
     views

    如何用ANTLR4创建AST?

    我一直在寻找很多关于这一点,我找不到任何有用的,真正帮助我 Build 一个AST . 我已经知道ANTLR4不像以前的ANTLR3那样构建AST . 每个人都说:“嘿,使用访客!”,但我找不到任何示例或更详细的解释如何我这样做... 我的语法必须像C一样,但每个命令都用葡萄牙语(portuga编程语言)编写 . 我可以使用ANTLR4轻松生成解析树 . 我的问题是:现在我需要做些什么才能创建AS...
  • 207 votes
     answers
     views

    无法加载文件或程序集...参数不正确

    最近我在C#解决方案中遇到了以下异常: 错误2无法加载文件或程序集'Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b9a188c8922137c6'或其依赖项之一 . 参数不正确 . (HRESULT异常:0x80070057(E_INVALIDARG)) 这不依赖于我的代码或程序集的名称(在本例中类...
  • 7 votes
     answers
     views

    编译器libstdc版本与系统版本

    我试图理解g如何选择它链接的libstdc版本以及当库的“系统”版本不同时它意味着什么 . 我正在使用gcc / g 4.1.2,根据ABI Guidelines doc,包括libstdc .so.6.0.8,果然: -rwxr-xr-x 1 root root 4397810 May 18 2007 /opt/gcc4.1.2/lib/libstdc++.so.6.0.8 基于我对ABI...
  • 1 votes
     answers
     views

    clang无法与libstdc链接

    HelloWorld已编译但可以't be linked with libstdc++ with clang 3.3. libstdc++ headers are found and the file is compiled. Though i' m使用 clang++ 链接并传递 -Lpath ,其中 libstdc++.a 位于找不到 std . 我已尝试使用相同的路径和LD_LIBRARY...

热门问题