小编sam*_*moz的帖子

在Erlang中使用大量的尾递归会减慢它吗?

我最近一直在阅读关于Erlang的内容,以及由于使用迭代循环的困难,尾部递归如此频繁使用.

递归的这种高使用是否会降低它的速度,所有函数调用以及它们对堆栈的影响是什么?或者尾部递归否定了大部分内容?

erlang tail-recursion

8
推荐指数
2
解决办法
1687
查看次数

Erlang可以在任何非x86处理器上运行吗?

Erlang可以在任何非x86平台上运行吗?

例如微控制器?我认为得到一堆这些并将Erlang代码放在它们上是很好的.

或者它是否适用于GPU?有了Erlangs并发性,它应该能够正确使用GPU.或者是CUDA(至少对于NVidia卡而言)?

erlang

8
推荐指数
3
解决办法
2489
查看次数

如何从外部存储器运行ARM代码?

我正在使用LPC2132 ARM芯片开发程序.但是,我的程序比芯片上的空间大.

如何将芯片连接到某种外部存储器芯片以保存其他可执行代码?这可能吗?如果没有,人们在芯片空间耗尽时通常会做些什么?

memory embedded arm

8
推荐指数
2
解决办法
4294
查看次数

一线定义?

我正在更新一些代码,当我在标题中工作时,我遇到了以下行.

.
.
.
class HereIsMyClass;
.
.
.
Run Code Online (Sandbox Code Playgroud)

而已.它只是一行,在另一个更长的类定义之前.HereIsMyClass实际上是其他地方的另一个类,但我不明白为什么这行写在这里.它有什么作用?

c++ class definition

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

如何让GCC将.text段编译为ELF二进制文件中的可写?

我希望能够动态更改我正在使用的库中的可执行代码.从本质上讲,如果不需要,我想动态地删除某些功能.

但是,我使用的库的.text部分是不可写的(大多数程序都是如此).我有库的源代码,因此希望使用GCC将其编译为可写.

有没有办法做到这一点?

c++ gcc elf

7
推荐指数
3
解决办法
4687
查看次数

将半字节转换为u64最合适的方法是什么?

我正在尝试学习Rust并决定编写一个将十六进制字符串转换为u64的程序.

目前,我已经将字符串解析为u8值的向量,每个值代表四位(或"半字节").我编写了以下代码来获取Vec<u8>并返回相应的代码u64.它的工作原理(据我的测试显示),但我不确定这是否是Rust的"适当"方式.

fn convert_nibbles_to_u64(values: &Vec<u8>) -> u64 {
    // We need to turn this buffer into a u64 now
    let mut temp:u64 = 0;
    for i in values {
        temp = temp << 4;

        unsafe {
            // We need to unsafely convert a u8 to a u64. Note that
            // the host endian-ness will matter here.
            use std::mem;
            let i_64_buffer = [0u8,0u8,0u8,0u8,0u8,0u8,0u8,i.clone()];
            let i_64 = mem::transmute::<[u8; 8], u64>(i_64_buffer);
            let i_64_be = u64::from_be(i_64);
            temp = temp | …
Run Code Online (Sandbox Code Playgroud)

rust

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

为什么mov指令直接使用ax而不是两个段寄存器?

我看到代码如下:

mov ax, cs
mov ds, ax
mov es, ax
Run Code Online (Sandbox Code Playgroud)

为什么我不能将其压缩为:

mov ds, cs
mov es, cs
Run Code Online (Sandbox Code Playgroud)

自使用累加器寄存器以来,第一种方式更快吗?但这似乎并不直观,因为cs和ds是段寄存器.还是有一些我不知道的限制?

顺便说一句,我正在使用nasm.

x86 assembly nasm accumulator addressing-mode

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

如何打印'\n'而不是换行?

我正在编写一个程序,使用打印输入的十六进制转储.但是,当传入换行符,制表符等并破坏输出格式时,我遇到了问题.

我怎样才能使用printf(或我猜想)打印'\n'而不是打印实际的换行符?我只需要为此进行一些手动解析吗?

编辑:我动态地接收我的数据,它不仅仅是我所关注的,而是所有符号.例如,这是我的printf语句:

printf("%c", theChar);
Run Code Online (Sandbox Code Playgroud)

当换行符作为theChar传入时,如何进行此打印\n但是当theChar是有效的可打印字符时仍然使其打印正常文本?

c++ formatting printf cout

6
推荐指数
5
解决办法
5万
查看次数

你能解释一下这个Ruby代码中发生了什么吗?

我正在尝试学习Ruby以及Ruby on Rails.我正在跟随Learning Rails,第1版,但我很难理解一些代码.

我通常使用C,C++或Java工作,所以Ruby对我来说是一个很大的变化.

我目前难以使用以下数据库迁移器代码块:

  def self.up
    create_table :entries do |t|
      t.string :name
      t.timestamps
    end
  end
Run Code Online (Sandbox Code Playgroud)

t变量来自哪里?它究竟代表什么?它有点像for(i = 0; i <5; i ++)语句中的'i'吗?

此外,在哪里:条目定义在?(条目是我的控制器的名称,但该功能如何知道?)

ruby ruby-on-rails

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

在ELF文件中,如何确定_start的地址?

我一直在阅读ELF规范,无法确定程序入口点和_start地址从何而来。

似乎它们应该在一个相当一致的位置,但是我编写了一些琐碎的程序,而_start始终在另一个位置。

谁能澄清?

symbols elf

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