inline-assembly

    0熱度

    2回答

    我在C這樣的功能: int write(int fd, char *buffer, int size) { int ret; __asm__("mov $4, %%eax;" "mov %0, %%ebx;" "mov %1, %%ecx;" "mov %2, %%edx;" "int $0x80" :

    0熱度

    2回答

    問題是,當程序步入行:stosb時,它將顯示一個錯誤:「程序接收到的信號SIGSEGV,分段錯誤。我不知道爲什麼,有什麼想法? 在ubuntu x86_64下,使用「gcc -o test test.c」進行編譯和鏈接。 #include <stdio.h> static inline char * strcpy(char * dest,const char *src) { int

    4熱度

    1回答

    我有這樣的代碼如下函數中: void makeSystemCall(uint32_t num, uint32_t param1, uint32_t param2, uint32_t param3){ asm volatile ( "mov %0, %%eax\n\t"//Move num to eax "mov %1, %%ebx\n\t"//Move param1

    3熱度

    1回答

    從內核源本次大會內嵌代碼片段我有這個下面的代碼片段爲PowerPC #define SPRN_IVOR32 0x210 /* Interrupt Vector Offset Register 32 */ unsigned long ivor[3]; ivor[0] = mfspr(SPRN_IVOR32); #define __stringify_1(x) #x #define _

    1熱度

    1回答

    我在C++中有inline asm問題。我試圖實現快速strlen,但它不工作 - 當我使用__declspec(naked)關鍵字調試器顯示輸入地址爲0x000000,當我不使用該關鍵字時,eax指向一些垃圾,函數返回各種值。 這裏是代碼: int fastStrlen(char *input) // I know that function does not calculate strlen

    6熱度

    1回答

    如果我要揭露一臺機器特定指令給程序員,有兩種方法我可以這樣做: 定義一個新的內建/固有 公開相同的內聯彙編ASM()作爲它的一個運算類型的指令,我認爲沒有必要對ASM揮發性() 我已閱讀,內建讓編譯器照顧類型檢查,寄存器分配和「其他優化」等。但是編譯器甚至需要在asm()的情況下做到這一點,對吧?那麼使用asm()作爲一個指令的性能好處究竟是什麼? 如果涉及多個機器指令,等式如何變化? 支持內在性

    3熱度

    1回答

    我正在試驗GCC的內聯彙編程序(我使用MinGW,我的操作系統是Win7)。 現在我只得到一些基本的C stdlib函數來工作。我一般不熟悉的Intel語法,但新AT & T. 下面的代碼工作不錯: char localmsg[] = "my local message"; asm("leal %0, %%eax" : "=m" (localmsg)); asm("push %eax");

    1熱度

    1回答

    我想要做的是在x86 asm中的給定地址處截取一個寄存器值並將其放入一個變量中。要做到這一點,我注入DLL到我的程序,那就是: #include <Windows.h> #include <stdio.h> void test() { int randomNum; DWORD address = 0x088AD6D; // return address (used on

    0熱度

    1回答

    我想在c中包含一個* .inc文件到我的內聯彙編程序。我怎樣才能做這項工作? 我目前正在用代碼塊在raspi上用gcc編程。 所以任何人有任何想法?

    1熱度

    2回答

    int smplSize = 48; int Smpl[48]; for(int i = 0; i < smplSize; i++) Smpl[i] = 0x0; Smpl[smplSize-1] = 0x1; int *ptrToSmpl = &Smpl[0]; printf("Sample @%p of Size %i :\n",(void*)ptrToSmpl,smplSiz