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"