我正在尝试在 VS 2013 编译的 Windows 8.1 上运行斐波那契演示。 到目前为止我解决了几个问题: 1. 目标文件格式不兼容 - 我在函数 getDefaultFormat(const Triple &T) for windows 中将 Triple::COFF 更改为 Triple::ELF 2. 缺少 asm 打印机 - 我添加了 InitializeNativeTargetAsmPrinter() 3. 内存保护 - 我手动将 VirtualProtect 设置为 PAGE_EXECUTE(它没有设置,我不知道它应该如何工作)
现在我可以运行生成的代码了,但是它崩溃了,这里是反汇编代码:
000000EC4B890000 推送 rsi
000000EC4B890001 推送 rdi
000000EC4B890002 推送 rbx
000000EC4B890003 子响应,20h
000000EC4B890007 mov esi,ecx
000000EC4B890009 cmp esi,2
000000EC4B89000C jg 000000EC4B890015
000000EC4B89000E mov eax,1
000000EC4B890013 jmp 000000EC4B89002F
000000EC4B890015 lea ecx,[rsi-1]
000000EC4B890018 mov rbx,0
000000EC4B890022 调用 rbx
000000EC4B890024 mov edi,eax
000000EC4B890026 添加 esi,0FFFFFFFEh
000000EC4B890029 mov ecx,esi
000000EC4B89002B 调用 rbx
000000EC4B89002D 添加 eax,edi
000000EC4B89002F 添加响应,20h
000000EC4B890033 弹出 rbx
000000EC4B890034 pop rdi
000000EC4B890035 弹出 rsi
000000EC4B890036 返回
地址 000000EC4B890018 上是指令 mov rbx,0,紧接着调用 rbx,这会导致崩溃。还有一件奇怪的事情,调用堆栈似乎已损坏,在序言之后调试器调用堆栈中有未调用的函数。
这是IR:
define i32 @fib(i32 %AnArg) {
EntryBlock:
%cond = icmp sle i32 %AnArg, 2
br i1 %cond, label %return, label %recurse
return: ; preds = %EntryBlock
ret i32 1
recurse: ; preds = %EntryBlock
%arg = sub i32 %AnArg, 1
%fibx1 = tail call i32 @fib(i32 %arg)
%arg1 = sub i32 %AnArg, 2
%fibx2 = tail call i32 @fib(i32 %arg1)
%addresult = add i32 %fibx1, %fibx2
ret i32 %addresult
}
我正在运行 Windows 8.1 专业版 LLVM 使用 VS 2013 社区版以 x64 配置编译 我正在使用 LLVM 3.6.0
注意:x86 配置有效(发行版中的解释器除外,它会崩溃)
我错过了什么吗?我应该将 ELF 用于 x64 还是 COFF(我认为它未在 JIT 中实现)?
我要开始一个大项目。性能很关键,我想在其中使用脚本,但必须对其进行调整。最重要的平台是 Windows、Android 和 iOS。我担心 llvm 对这些平台的 JIT 支持。我知道 llvm 和 clang 在所有这些平台上被广泛使用,但由于我目前遇到的问题,我不太确定 JIT。
最佳答案
我在 Windows 8.1、Visual Studio 2013、LLVM 3.6.1 (-elf hack) 上遇到了完全相同的问题。 JIT 代码未解析(mov reg,0x0)并且内存页面不可执行(立即崩溃)。
问题是:JIT 模块实际上并未最终确定,我认为它可能来自 -elf hack。 为了解决这个问题,我必须在 ExecutionEngine::getFunctionAddress (这应该确保模块已完成)和调用之间显式调用 ExecutionEngine::finalizeObject JIT 代码。
// Call the JIT'ed code
auto pCode = (BasicBlockCode)sm_pExecutionEngine->getFunctionAddress(pExecFunc->getName());
// NOTE: We must call this method explicitly since it seems getFunctionAddress won't call it
// -elf windows hack?
sm_pExecutionEngine->finalizeObject();
pCode(reinterpret_cast<u8*>(m_pCpuCtxt), reinterpret_cast<u8*>(m_pMemCtxt));
关于windows - llvm jit 窗口 8.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28851646/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生
我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解
我在安装“redcarpet”gem时遇到以下错误。它在我friend的机器上安装没有问题。(我想安装它来运行yard)ruby版本:1.9.3命令输出:D:\Learning\Common_POM_FW\SampleProjects>yard[error]:Missing'redcarpet'gemforMarkdownformatting.Installitwith`geminstallredcarpet`D:\Learning\Common_POM_FW\SampleProjects>geminstallredcarpetTemporarilyenhancingPATHtoinc
我们正在开发一个需要推送通知的WP8应用程序。为了测试它,我们使用CURL命令行运行推送通知POST请求,确保它实际连接,使用客户端SSL证书进行身份验证并发送正确的数据。我们确实知道,当我们收到对设备的推送时,这项工作是有效的。这是我们一直用于测试目的的CURL命令:curl--certclient_cert.pem-v-H"Content-Type:text/xml"-H"X-WindowsPhone-Target:Toast"-H"X-NotificationClass:2"-XPOST-d"MytitleMysubtitle"https://db3.notify.live.ne
我在Windows7上运行Jekyll时遇到问题。当我运行时jekyll出现以下错误C:\temp\jekyll\kouphax.github.com>jekyllConfigurationfromC:/temp/jekyll/kouphax.github.com/_config.ymlBuildingsite:C:/temp/jekyll/kouphax.github.com->C:/temp/jekyll/kouphax.github.com/_siteunit-testingYouaremissingalibraryrequiredforTextile.Pleaserun:$[s
我正在尝试使用本手册让Jekyll在Windows8x64上运行:RunningJekyllonWindows我正在使用来自rubyinstaller.org的以下两个下载:ruby2.0.0-p0(x64)DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe所以我根据手册设置了Ruby和DevKit(希望它是更新的版本)。我尝试运行一点HelloWorld.rb脚本,它工作正常,路径变量已设置。然后我尝试运行geminstalljekyll并得到以下输出:geminstalljekyll-outputonpastebin.com问题似乎出在名为f