小编ext*_*xe5的帖子

bash:./helloworld_s:没有这样的文件或目录。该文件显然在那里

我对bash并不陌生,但这是我第一次看到这种情况。

[OP@localhost linking]$ ls
helloworld-lib.o  helloworld-lib.s  helloworld_s
[OP@localhost linking]$ ./helloworld_s
bash: ./helloworld_s: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我在测试链接器时发生此错误ld。的内容helloworld-lib.s是:

[OP@localhost linking]$ cat helloworld-lib.s 
    .section .data
helloworld:
    .ascii "Hello, world!\n\0"

    .section .text
    .globl _start

_start:
    mov $helloworld, %rdi
    call printf

    mov $0, %rdi
    call exit
Run Code Online (Sandbox Code Playgroud)

该文件helloworld_s产生如下。

[OP@localhost linking]$ as helloworld-lib.s -o helloworld-lib.o
[OP@localhost linking]$ ld -lc helloworld-lib.o -o helloworld_s
Run Code Online (Sandbox Code Playgroud)

如果有任何相关信息,则为IDK。仅供参考,如果我尝试运行其他文件,我只会得到一个被拒绝的权限(如预期的那样)。有任何想法吗?

编辑:按照建议,这是输出ls -l

[OP@localhost linking]$ ls -l
total 88
-rw-rw-r--. 1 OP OP   968 Mar …
Run Code Online (Sandbox Code Playgroud)

linux bash

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

为什么我们不使用三元堆或四元堆?

我做了一些计算,似乎三元堆总是优于二元堆,而四元堆有时会优于三元堆。

令c、s分别表示比较和交换所需的时间。假设我们有一个长度为 n 的 k 元堆。堆支持两种基本操作:

  1. 插入。假设您要向上传播,这需要 log_k(n)*(c + s) 时间,这对于较大的 k 来说总是更好(这是有道理的,因为对于较大的 k,堆的结构较差。)
  2. 最大提取量 这需要 log_k(n) * (kc + s) 时间。我不知道如何在这里做 LaTeX,所以我不会写出方程,但请相信我说,对于 c = s,最小值出现在 k = 3.59 处,最小值仅取决于 c / s 的比率。对于较大的 c,最小值出现在较小的 k 处。

然而,这就是我真正困惑的地方:比较 k = 2 和 3,您实际上会发现对于提取最大值和插入, 3总是比 2 更好。(我也不会写出方程,但这部分是因为 3^2 > 2^3)。

那么我们为什么不使用三元堆呢?为什么我们总是使用二叉堆?

heap

3
推荐指数
2
解决办法
2125
查看次数

DataFrame.ix被弃用意味着什么?

假设我DataFrame.ix在一些代码中使用.

它被弃用的事实意味着在未来的某个时刻,我将更新大熊猫,然后稍后,使用该代码的东西将神秘地开始破坏,因为他们最终决定,他们将去实际上删除ix

python deprecated pandas

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

使用 GPU 的程序(程序集)是什么样子的?

这个答案看来,GPU制造商只是为特定的GPU API提供了驱动程序,并且不存在GPU组装这样的东西,或者至少,永远不会有像AMD64程序员手册那样出版的GPU组装编程手册

然而,据我了解,所有进程运行都经过CPU,并且可以被反汇编。

我的问题是:使用 GPU 的程序汇编会是什么样子?我的假设是,它将使用系统调用来操作代表 GPU 的设备文件。这个假设正确吗?

assembly gpu

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

标签 统计

assembly ×1

bash ×1

deprecated ×1

gpu ×1

heap ×1

linux ×1

pandas ×1

python ×1