inline-assembly

    -1热度

    2回答

    我想写一个简单的比较和交换内联汇编代码。这里是我的代码 #include <stdio.h> #include <stdlib.h> #include <stdint.h> static inline unsigned long cas(volatile unsigned long* ptr, unsigned long old, unsigned long _new) { u

    -1热度

    1回答

    我有以下代码在x86/linux中完美运行。我想使用gcc交叉编译器将此代码转换为ALPHA。 它产生的错误类似如下: 未知的寄存器名“EAX”在“ASM” 我无法找到合适的来源做我自己。 inline uint64_t timestamp(void) { unsigned long a; unsigned long d; asm volatile("

    1热度

    1回答

    我在使用-std=c++11时无法编译GCC 4.9下的一些代码。 GCC 4.9在Debian 8.5(Stable)下提供,所以它相当受欢迎。 相关的代码是: __inline __m128i clmulepi64_si128 (__m128i a, __m128i b, const int i) { asm ("pclmulqdq %2, %1, %0" : "+x"(a) :

    1热度

    2回答

    我有了这个代码,应该改变大写字母为小写字母: void tolower(char *text) { _asm { mov esi, text; mov ecx, 0; mov bl, 32; opakuj: cmp [esi + ecx], 0; je konec; cmp [esi + ec

    0热度

    1回答

    我创建了一个具有结构的数组,我需要使用索引和指向数组的指针从数组中获取结构。 struct T{ char a, b, c, d, e, f, g; }; T CtiPrvekPole1(T *pole, int index){ T result; _asm{ mov eax, pole; mov ebx, index; mo

    1热度

    1回答

    我正试图通过内联汇编来访问Broadcom ARM processsor上的硬件寄存器。我通过裸机编程访问硬件寄存器,但现在我试图使用asm将这些裸机编程代码整合到C文件中。这里是我的代码,切换GPIO 17上树莓派2: void main() { __asm__( ".section .init\n\t" ".globl _start\n\t"

    1热度

    1回答

    我正在尝试使用SSE进行一些添加,并且我正在使用这个C程序集。为什么这样的东西不起作用? struct vector { float x1, x2, x3, x4; }; struct vector *dodawanie(const struct vector v1[], const struct vector v2[], int size) { struct vector v

    0热度

    2回答

    我知道有rules管理堆栈指针在86的修改: 超越RSP的当前地址的所有内存被认为是挥发性:操作系统,或一个调试器,可在用户调试会话或中断处理程序期间覆盖此内存。因此,在尝试读取或写入堆栈帧的值之前,必须始终设置RSP。 我的问题是,ARM的规则是什么?我在看this代码(看下面摘录),它看起来像违反了x86规则(修改内存,然后更改堆栈指针),但这是ARM的问题吗? mov r4, sp sub

    0热度

    1回答

    功能 __virt_to_phys(unsigned long x) 其归结为 __pv_stub(x, t, "add", __PV_BITS_31_24); __pv_stub宏扩展到 add t, x, 0x8100_0000 除了插入一个指向.pv_table节该指令,其可用于在启动过程中修补此添加指令。 我的问题是关于常量__PV_BITS_31_24。是否有任何理由使用值0

    0热度

    1回答

    有一些问题/内联汇编我不明白。 我有一个嵌入式汇编程序的功能。在ASM块内,我需要使用一些临时寄存器来修改某些系统值。 void setHW(uint32_t val) { asm volatile ( mrc 15, 0, r0, ... orr r0, r0, %0 mcr 15, 0, r0, ... : :"r"(val) :"r0"