小编VEL*_*ETH的帖子

如何理解汇编级别的原子test_and_set?

您好,我是 gcc 内置原子函数的新手。我正在使用那个test-and-set您可以在这里找到参考

这是问题:

我已经完成了这段代码:

#define bool int
#define true 1
#define false 0

int main() {
    bool lock = true;
    bool val = __sync_lock_test_and_set(&lock, true);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我打算做的是检查 的汇编指令__sync_lock_test_and_set。我用过:

gcc -S [filename].c
Run Code Online (Sandbox Code Playgroud)

结果是:

        .file   "test_and_set.c"
        .file   "test_and_set.c"
        .text
        .globl  main
        .type   main, @function
main:
.LFB0:
        .cfi_startproc
        pushl   %ebp
        .cfi_def_cfa_offset 8
        .cfi_offset 5, -8
        movl    %esp, %ebp
        .cfi_def_cfa_register 5
        subl    $16, %esp
        movl    $1, -8(%ebp)
        movl    $1, %eax
        xchgl   -8(%ebp), %eax
        movl …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly gcc

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

GHC - Haskell中的Infixl声明

嗨,我正在构建自己的GPU编程Haskell DSL版本,称为Accelerate.问题是关于infixl声明:

这是代码片段:

infixl 3 :.
data tail :. head = tail :. head
    deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

我认为这个片段非常简单明了,但当我尝试将其加载到ghci时,它失败了:

它报告说:

Illegal declaration of a type or class operator ‘:.’
      Use TypeOperators to declare operators in type and declarations
Run Code Online (Sandbox Code Playgroud)

你对这个问题有什么看法吗?我正在使用的ghc版本是:

The Glorious Glasgow Haskell Compilation System, version 7.8.3
Run Code Online (Sandbox Code Playgroud)

谢谢!

haskell ghc accelerate-haskell

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

为什么`Just String`在Haskell中会出错

嗨我在学习Haskell中的参数化类型主题时遇到了一个微不足道但令人筋疲力尽的问题.这是我的问题:

看这是定义Maybe:

data Maybe a = Just a | Nothing
Run Code Online (Sandbox Code Playgroud)

我们使用这个:

Just "hello world"
Just 100
Run Code Online (Sandbox Code Playgroud)

但为什么不能只采取一个类型变量

例如:

Just String
Just Int
Run Code Online (Sandbox Code Playgroud)

我知道这个问题很傻,但我还是想不出来......

haskell

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

标签 统计

haskell ×2

accelerate-haskell ×1

assembly ×1

c ×1

gcc ×1

ghc ×1

x86 ×1