inline-assembly

    0熱度

    1回答

    我使用pic 18F4550與microchip v8.63的C編譯器。我使用 書籍「使用匯編的pic微控制器和嵌入式系統以及用於pic18的c」中的以下代碼。 在以下行代碼上,我收到語法錯誤:RCNT EQU 0x20和MYREG EQU 0x21。 _asm RCNT EQU 0x20 MYREG EQU 0x21 BCF TRISB,1 MOVLW

    4熱度

    2回答

    以下代碼在32位Visual Studio C++中是可能的。由於內聯ASM在64位版本的Visual Studio C++中不受支持,是否存在使用內部函數的64位等效項? FORCEINLINE bool bAtomicCAS8(volatile UINT8 *dest, UINT8 oldval, UINT8 newval) { bool result=false; __

    0熱度

    2回答

    我需要使用inline asm編寫一個常見任務:我使用的代碼如下所示。 Vector3 Matrix3x3::objectToInertial(const Vector3 &v) { return Vector3( m11 * v.x + m12 * v.y + m13 * v.z, m21 * v.x + m22 * v.y + m23 * v.z,

    1熱度

    2回答

    我想從128位寄存器中提取數值(第一個字16bits),我得到了這個命令但這不起作用。設置a的值後會有一些算術運算,比會有一些算術運算的變量中的結果將最終改變我想提取的第一個字...我怎樣才能做到這一點... int r; int inm=0; __m128i a=_mm_setr_epi16(8,9,3,2,4,5,6,11); _asm{ r = _mm_extract_e

    2熱度

    1回答

    long getesp() { __asm__("movl %esp,%eax"); } void main() { printf("%08X\n",getesp()+4); } 爲什麼在堆棧幀設置之前esp指向value,並且它與下面的代碼有什麼區別? void main() { __asm__("movl %esp,%ea

    0熱度

    1回答

    可能重複堆疊的起始地址: executing assembly within a function in c++ long getesp() { __asm__("movl %esp,%eax"); } void main() { printf("%08X\n",getesp()+4); } 爲什麼是ESP印刷之前棧設置(在pushl%EBP之前, movl%esp,%ebp) 在

    3熱度

    5回答

    如何將英特爾asm代碼放入我的C++應用程序中? 我正在使用Dev-C++。 我想做某事這樣的: int temp = 0; int usernb = 3; pusha mov eax, temp inc eax xor usernb, usernb mov eax, usernb popa 這是唯一的例子。 我該怎麼辦? UPDATE: 它在Visual Studio中的外觀

    2熱度

    4回答

    char name[25]; int generated_int; for(int i = 0; i<sizeof(name); i++) { name[i] = (char)0; } cout << "Name: "; cin >> name; int nameLen = strlen(name); __asm { pusha; mov

    1熱度

    3回答

    我使用的代碼:: Blocks的代碼,但我引用的代碼的一個是從Visual C++的,所以我對差的困難... :( 完整的代碼在這裏 NAKED void ijlWrite() { __asm { PUSH EBP MOV EBP, ESP MOV EAX, DWORD PTR SS:[EBP+8h] MOV ECX, ssQuality

    0熱度

    2回答

    我有一個內嵌AT &牛逼風格組合部件,它與XMM寄存器和工作中有沒有問題釋放我的XCode項目配置,但是我已經在這個奇怪的錯誤無意中發現(這是按說GCC錯誤)在調試配置...我可以修復它以某種方式?彙編代碼沒有什麼特別之處,但我使用了很多內存約束(12約束),這是否會導致此問題?