Tag: llvm

汇编,机器代码,字节码和操作码之间的实际关系是什么?

汇编,机器代码,字节码和操作码之间的实际关系是什么? 我已经阅读了大部分有关汇编和机器代码的SO问题,例如,但它们的级别太高,并没有显示实际汇编代码转换为机器代码的示例。 结果,我仍然不明白它是如何在更深层次上运作的。 这个问题的理想答案将显示一些汇编代码的具体示例,例如下面的代码段,以及每个汇编指令如何映射到机器代码,字节码和/或操作码。 这样的答案对未来的人们学习集会非常有帮助,因为在过去几天的挖掘过程中,我还没有找到任何明确的总结。 我要找的主要内容是: 一段汇编代码 一段机器代码 程序集和机器代码片段之间的映射 (如何进行映射,或者至少是一些一般示例,以及如何知道如何执行此操作,Web上的所有这些信息都在哪里) 如何解释机器代码 (就像操作码以某种方式相关,以及网上关于所有这些数字意味着什么的所有信息) 注意:我没有计算机科学背景,所以我在过去几年里一直在慢慢走低水平,现在已经到了想要了解assembly和机器代码的程度。 assembly与机器代码之间的关系 我目前的理解是“汇编程序”(如NASM)接收汇编代码并从中创建机器代码。 所以当你编译一些像这个example.asm这样的程序集时: global main section .text main: call write write: mov rax, 0x2000004 mov rdi, 1 mov rsi, message mov rdx, length syscall section .data message: db ‘Hello, world!’, 0xa length: equ $ – message (用nasm -f macho64 -o example.o example.asm编译它)。 […]

在llvm中的IR代码中添加函数调用

你能举个例子,如何添加函数的简单调用 foo(x); 我在我的IR代码中使用llvm中的传递?

clang / clang ++在Windows中找不到C / C ++头文件?

1小时前我从http://llvm.org/pre-releases/3.6.0/下载了llvm-3.6.0-rc4-win32.exe。 我试图编译只打印“hello”的简单C代码,但它没有编译,因为clang.exe找不到stdio.h。 当我使用clang-cl.exe和相同的代码时,它工作。 我对clang ++也有同样的问题,即使使用iostream,我在GCC(4.9.1)C ++标题中添加了-I标志,结果如下: C:\Users\One\Desktop>clang++ -I c:\MinGW\x86_64-w64-mingw32\include\c++ main.cpp -lib=libstdc++ In file included from main.cpp:1: c:\MinGW\x86_64-w64-mingw32\include\c++\iostream:38:10: fatal error:’bits/c++config.h’ file not found #include 1 error generated. 有人知道怎么修这个东西吗 ? 编辑:我在MinGW文件夹中找到bits / c ++ config.h我将它添加到-I标志和其他。 我导致链接错误: C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/4.9.1/../../../../x86_64-w64-mingw32/ bin/ld.exe: cannot find -lib=libstdc++ C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/4.9.1/../../../../x86_64-w64-mingw32/ bin/ld.exe: skipping incompatible C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/4.9 .1//libstdc++.dll.a when searching for -lstdc++ C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/4.9.1/../../../../x86_64-w64-mingw32/ bin/ld.exe: skipping incompatible C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/4.9 .1//libstdc++.a […]

解析和修改LLVM IR代码

我想读取(解析)LLVM IR代码(保存在文本文件中)并添加一些我自己的代码。 我需要一些这样做的例子,也就是说,如何通过使用LLVM提供的库来实现这一目的。 基本上我想要的是将IR代码从文本文件读入内存(也许LLVM库以ASTforms表示它,我不知道),进行修改,比如在AST中添加更多节点然后最后写在IR文本文件中备份AST。 虽然我需要阅读和修改IR代码,但如果有人能够提供或推荐我刚刚读取(解析)它的一些示例,我将不胜感激。