小编Che*_*anc的帖子

ar/nm和gcc-ar/gcc-nm有什么区别?

ar,nmranlib由binutils的包中提供的.gcc-ar,gcc-nmgcc-ranlib由GCC包提供.我听说的gcc-ar,gcc-nm以及gcc-ranlib是"有效的包装"周围ar,nmranlib二进制文件分别.

是什么之间的差异的技术gcc-ar,gcc-nm以及gcc-ranlibar,nmranlib?GCC必须在其构建中提供这些二进制文件.

userland包的构建系统何时应该使用一个而不是另一个?如果用于构建userland包的工具链是基于GCC的,那么您使用哪一个(例如,arvs gcc-ar,nmvs gcc-nm)是否重要?

gcc binutils linux-toolchain

10
推荐指数
1
解决办法
3636
查看次数

gcc内在vs内联汇编:哪个更好?

如果我想向程序员公开一个特定于机器的指令,我有两种方法可以这样做:

  1. 定义一个新的内置/内在
  2. 暴露与内联汇编asm()相同[由于它是一个算术类型的指令,我相信不需要asm volatile()]

我已经读过内置函数允许编译器处理类型检查,寄存器分配和"其他优化"等.但是即使在asm()的情况下,编译器也需要这样做,对吧?那么对于单个指令使用asm()内在的性能优势究竟是什么呢?

如果涉及多个机器指令,方程式如何变化?

支持内在的"可移植性"论证是可以理解的,但我很想知道其中一个的性能优势(如果有的话).

c compiler-construction assembly gcc inline-assembly

7
推荐指数
1
解决办法
1464
查看次数

如何在Java中解释-XX:CompileCommand =“ print Class :: Method”的输出

这是我运行以下命令时得到的输出的摘录(40只是Fibonacci程序的arg):

java -XX:+ UnlockDiagnosticVMOptions -XX:CompileCommand =“ print Fibonacci :: fibonacci” Fibonacci 40

有人可以解释每个数据的含义吗(我想这意味着字节数,例如,主代码需要288字节)。另外,各种类别是什么意思-重定位,存根代码,元数据,范围数据,范围pc,处理程序表等是什么意思?

...
Compiled method (c2)      93   16       4       Fibonacci::fibonacci (22 bytes)
total in heap  [0xfff8000108113dd0,0xfff8000108114440] = 1648
relocation     [0xfff8000108113f00,0xfff8000108113f48] = 72
main code      [0xfff8000108113f60,0xfff8000108114080] = 288
stub code      [0xfff8000108114080,0xfff80001081141e0] = 352
oops           [0xfff80001081141e0,0xfff80001081141e8] = 8
metadata       [0xfff80001081141e8,0xfff8000108114210] = 40
scopes data    [0xfff8000108114210,0xfff8000108114298] = 136
scopes pcs     [0xfff8000108114298,0xfff80001081143d8] = 320
dependencies   [0xfff80001081143d8,0xfff80001081143e0] = 8
handler table  [0xfff80001081143e0,0xfff8000108114440] = 96
----------------------------------------------------------------------
Fibonacci.fibonacci  [0xfff8000108113f60, 0xfff80001081141e0]  640 bytes
[Entry Point]
[Verified Entry …
Run Code Online (Sandbox Code Playgroud)

java jvm-hotspot java-opts java-8

3
推荐指数
1
解决办法
195
查看次数

gcc 可以在不交叉编译的情况下为 Arm 生成二进制文件吗

我们是否可以配置运行在 intel x64 架构上的 gcc 来为 ARM 芯片生成二进制文件,只需将一些标志传递给 gcc,而不使用交叉编译器。

linux gcc arm gnu-toolchain linux-toolchain

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