- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不清楚 clang 使用的汇编器。 AFAIK native 又名 GNU 汇编器和链接器被使用(与 gcc 一起提供)。
clang -v main.c
clang version 3.4.2
Target: x86_64-unknown-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.6.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.5.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.3
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5
"/usr/bin/clang-3.4" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name main.c -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -v -resource-dir /usr/bin/../lib/clang/3.4.2 -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.4.2/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir /home/shrkamat/test/hello-c -ferror-limit 19 -fmessage-length 230 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-slp -o /tmp/main-18929a.o -x c main.c
clang -cc1 version 3.4.2 based upon LLVM 3.4.2 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/bin/../lib/clang/3.4.2/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
"/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu/crt1.o /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/crtbegin.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/4.5 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/../../.. -L/lib -L/usr/lib /tmp/main-18929a.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/crtend.o /usr/bin/../lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu/crtn.o
我也看到了llvm-as,不太清楚它是否被使用。
which llvm-as
/usr/bin/llvm-as
root@e2cccbdeac09# llvm-as --version
LLVM (http://llvm.org/):
LLVM version 3.4.2
Optimized build.
Built Aug 8 2019 (08:55:24).
Default target: x86_64-unknown-linux-gnu
Host CPU: core-avx-i
我确实尝试使用 strace 来查看系统调用,以检查是否有为任何汇编器调用的 exec,但没有运气
grep -r exec trace.601*
trace.6016:execve("/usr/bin/clang", ["clang", "-v", "main.c"], [/* 12 vars */]) = 0
trace.6017:execve("/usr/bin/clang-3.4", ["/usr/bin/clang-3.4", "-cc1", "-triple", "x86_64-unknown-linux-gnu", "-emit-obj", "-mrelax-all", "-disable-free", "-disable-llvm-verifier", "-main-file-name", "main.c", "-mrelocation-model", "static", "-mdisable-fp-elim", "-fmath-errno", "-masm-verbose", "-mconstructor-aliases", ...], [/* 12 vars */]) = 0
trace.6018:execve("/usr/bin/ld", ["/usr/bin/ld", "-z", "relro", "--hash-style=gnu", "--build-id", "--eh-frame-hdr", "-m", "elf_x86_64", "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", "-o", "a.out", "/usr/bin/../lib/gcc/x86_64-linux"..., "/usr/bin/../lib/gcc/x86_64-linux"..., "/usr/bin/../lib/gcc/x86_64-linux"..., "-L/usr/bin/../lib/gcc/x86_64-lin"..., ...], [/* 12 vars */]) = 0
我可以将 GNU 汇编器 (/usr/bin/as) 与 clang 一起使用吗?
最佳答案
LLVM 有自己的汇编器,称为集成汇编器。它由多个库组成,并且没有面向用户的前端(嗯,有 llvm-mc,但它并不是真正的 as 替代品)。当传递 -filetype=obj
选项时,llc
实用程序可以调用集成汇编器。这也是您在跟踪 execve
调用时看不到任何汇编程序调用的原因。
Clang 有 -no-integrated-as
标志来关闭 LLVM 汇编器。
关于clang - clang 使用哪个汇编器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57425663/
某些 AMD64/x86 命令需要立即值作为操作数(例如 imm8)。是否可以使用存储在某个寄存器中的值(例如 ah)来代替这个硬编码值? 例如: 如果我想移动 xmm 寄存器,可以使用 pslldq
您好,我正在修改汇编级编程。我有以下代码 mov al, 'H' call my_function my_function: mov ah,0x0e ;
x86 汇编程序例程通常以以下序言开始: push ebp ; Save ebp mov ebp, esp ; Set
这个问题已经有答案了: What is the purpose of XORing a register with itself? [duplicate] (7 个回答) 已关闭 2 年前。 我们有时
如果您不了解二进制,我知道 BCD 是更直观的数据类型。但我不知道为什么要使用这种编码,它好像没有多大意义,因为它浪费以 4 位表示(当表示大于 9 时)。 另外,我认为 x86 仅支持直接添加和替换
x86 汇编程序例程通常以以下序言开始: push ebp ; Save ebp mov ebp, esp ; Set
var a int[1]; var aa int[1]; aa = a; 假设我们想在 java jvm 中编译这样的东西。看起来人们只会做一个 ldc 1 newarray int astor
是否有任何编写 MIPS 汇编器的引用指南或教程? 最佳答案 如果您希望实际编写汇编程序,您需要知道您正在编写的平台的可执行文件的格式(例如 ELF ),那么您需要使用 MIPS instructio
我想写一个简单的 M.A.R.I.E.计算表达式 A x B + C x D 的程序. 现在,关于 Marie 汇编语言的信息并不多。我不确定是否有乘法?如果没有,我是否必须循环或其他东西才能使其成倍
我想知道为 NASM 编写汇编代码的格式是什么。有什么地方教的吗?我尝试在 NASM 上运行 MASM32 文件,但我认为它无法识别指令。 最佳答案 总是有 the manual . 关于linux
我想要的是类似 g++ 的东西,我可以在其中输入: compiler_name my_assembly_code.extention ...并让它编译我的汇编代码。它是 32 位还是 64 位并不重要
我正在为 8086 开发一个汇编程序。我的问题是如何将十六进制操作码转换为可执行文件,如 .EXE、.ELF、.COM、a.out 等。为此寻找链接/资源,汇编程序应该执行链接过程还是由操作系统自动?
我想编写 64 位 Windows 程序集(最好使用 NASM)。我在谷歌上看起来很不错,但似乎找不到 64 位 Windows 编译器。一些站点提到了 ml64,但它似乎不再包含在 VC++ 中。我
使用 GNU Binutils 声明汇编代码时,例如: .long MY_Label .long MY_Second_label 即使操作码和其他信息在地址空间中将它们分开,也可以在进行十六进制转储时
似乎单元测试这些天变得风靡一时,我知道你们中的许多人会想:“那么为什么不直接使用语言 X 和框架 Y 呢?”但我提出这个想法更多是为了证明概念,或者是出于对我早年计算机编程的怀念。 我正在研究使用 N
作为编译器项目的一部分,我必须为 x86 编写 GNU 汇编器代码来比较浮点值。我试图找到有关如何在线执行此操作的资源,据我了解,它的工作原理如下: 假设我要比较的两个值是浮点堆栈上的唯一值,则 fc
操作系统:Windows 10 CPU:英特尔酷睿 i5-5300U 架构:x64 我刚刚开始学习汇编语言。我使用了在线编译器,但今天我下载了NASM。我尝试编写这个将 10 乘以 15 的简单代码:
查看以下代码: (ebp-0x8 -> int) (ebp-0x4 -> int*) => 0x80483f3 : mov DWORD PTR [ebp-0x8],0x0 0x80483
我需要编写一个类似 CorFlags 的应用程序。如果我有程序集文件的路径,我该如何读取它的 CorFlags? 我特别需要知道程序集是 Any-CPU 还是仅 x86 我想避免使用反射加载程序集,因
查看以下代码: (ebp-0x8 -> int) (ebp-0x4 -> int*) => 0x80483f3 : mov DWORD PTR [ebp-0x8],0x0 0x80483
我是一名优秀的程序员,十分优秀!