inline-assembly

    0熱度

    1回答

    我試圖建立在GCC GNU組件16位內核,而我的引導程序是用純組裝,但我有麻煩打印出的字符串,而單個字符都還好: 這裏是我的bootloader.asm: org 0x7c00 bits 16 section .text mov ax,0x1000 mov ss,ax mov sp,0x000 mov esp,0xfffe xor ax,ax mov es,ax

    3熱度

    2回答

    兩個問題: (1)如果我理解正確的ARM內聯彙編的「R」的約束說,指令操作數只能是一個核心寄存器,在默認情況下是一個只讀操作數。但是,我注意到,如果同一指令的輸出操作數的約束爲「= r」,編譯器可能會重新使用相同的寄存器。這似乎違反了「只讀」屬性。所以我的問題是:「只讀」引用寄存器還是引用它連接的C變量? (2)在約束「= &r」中是否存在「&」僅僅要求爲輸出操作數選擇的寄存器不能與輸入操作數寄存

    1熱度

    1回答

    我試圖在Linux中使用nano文本文件轉換內聯彙編代碼。 __asm__ ("MOV AX, morales1\n\t" "MOV BX, morales2\n\t;" "ADD AX, BX\n\t;" "MOV morales, AX;" ); 士氣1和2被簽名爲短褲。我收到以下錯誤: "Error: ARM register expect

    2熱度

    1回答

    我很好奇,是否有可能在Java中運行Android的字節碼,類似於如何在c++中使用內聯程序集。在C++中,我可以運行程序集並在程序中使用它的結果。 我不想在運行時注入字節碼,但在實際編譯apk之前。 // example of MSVC-syntax inline-asm syntax; not actually doing anything useful. __asm { mov

    0熱度

    3回答

    所以我一直用C寫的 int transform (char * p) { if(*p!='-'){ return 0; } p++; if(*p == 'a') { return 1; } else if(*p == 'b') { return 2; } el

    0熱度

    2回答

    我有這個函數使用內聯彙編,基本上調用C函數,獲取返回的值,並將該值作爲參數傳遞給返回字符的另一個函數。編纂成法典 void convertText(FILE *arch, FILE *result) { int i = 0; int n = arch->size; _asm { mov esi, 0 whileS: cmp esi, n

    0熱度

    1回答

    我試圖將一個爲arm926ejs編寫的簡單RTOS移植到arm cortex-A9上。雖然參照上下文切換,我碰到下面的說明, _userIntrStackPtr: .word 0x0 STR sp,_userIntrStackPtr LDR r0,__userStackPtr2Ptr 但是,當我嘗試編譯代碼時,我得到的錯誤 Error: internal_relocati

    2熱度

    1回答

    所以我試圖轉換從C以下分配到內聯彙編 resp = (0x1F)&(letter >> (3 - numB)); 假設執行SHR該變量的聲明有以下幾種 unsigned char resp; unsigned char letter; int numB; 所以我試過以下內容: _asm { mov ebx, 01fh movzx edx, letter

    1熱度

    1回答

    我想編寫一個不使用c原型的程序集函數。 由於某些原因,它看起來像gcc不允許在全局上下文中使用擴展的asm。 請考慮下面的代碼,編譯succssefully: void *g_var; void foo() { asm ("stx %%i7, [%0]" :"=r" (g_var)); } 當我還試圖確定使用ASM原型,如下所示: asm(".global foo

    0熱度

    1回答

    我有一個包含一個int像下面這樣的結構從結構指針來: typedef struct arch { int size; unsigned char *info } SARCH; ,我有一個需要執行以下功能: void change(SARCH *arch) { int n; n = arch-> size; // Do something w