inline-assembly

    2热度

    1回答

    我正在处理一个分配,我必须将C代码片段转换为内联汇编。该代码是呈现Julia分形的程序的一部分。 我已经测试了两个代码片段的输出,并且它们完全匹配,但是我的程序仍然输出不同的图像(适用于C代码的Julia分形,内联汇编代码的扁平粉色屏幕)。 这是函数的开始部分以及返回 COLORREF render_point(const double &a, const double &b,

    0热度

    1回答

    你们能告诉我我在哪里弄错了吗? 我需要在inline-assembly -2xy-3z中计算它。 int solution(int x, int y, int z) { x=4; y=5; z=2; int result; __asm { mov eax, -2 imul [x] imul [y]

    0热度

    1回答

    使用GCC和inline assembly,我想立即加载一个特定的寄存器r0。但是,我没有得到正确的结果。 unsigned short value = 0x1337; asm volatile ( "li 0, %0\n\t" "sc\n\t" "blr" : /* Output registers */ :"r"(value) /* Input registe

    2热度

    1回答

    对于娱乐,我正在学习GNU扩展程序集,使用带有32位Linux目标的x86的AT & T语法。我刚刚花了最后三个小时编码两个可能的解决方案,以交换两个整数变量a和b的值,我的解决方案都不能完全解决我的问题。首先,让我们来看看我的TODO障碍在一些细节: int main() { int a = 2, b = 1; printf("a is %d, b is %d\n", a,

    0热度

    1回答

    我试图将我的C代码转换为x86-64。我的目标是扭转链接列表。传入的两个参数是头部ptr和偏移量以获取指针字段的地址(即指向列表中下一个节点的指针)。 据我所知,头ptr通过rdi寄存器传入,偏移量通过rsi寄存器传入。当它到达“mov rcx,[rbx]”行时,我不断收到分段错误。“只有“mov rcx,rbx”并且后面的行从“mov [rbx],rdx”更改为“mov rbx,rdx”时,分段

    0热度

    1回答

    我试图交换使用GNU扩展组件两个整型变量,这里就是我现在: int main() { int a = 2; int b = 1; printf("a is %d, b is %d\n", a, b); // TODO (student): swap a and b using inline assembly printf("a is %d, b

    -1热度

    1回答

    我想编译一个简单的C程序(Win7 32bit,Mingw32 Shell和GCC 5.3.0)。 C代码是这样的: #include <stdio.h> #include <stdlib.h> #define _set_tssldt_desc(n,addr,type) \ __asm__ ("movw $104,%1\n\t" \ :\ :"a" (addr),\

    0热度

    1回答

    我想了解的汇编代码的一些片段: ".syntax unified\n" "1:\n" " NOP\n" " NOP\n" " NOP\n" " NOP\n" " NOP\n" " CMP %[SystemCoreClock],%[clock16MHz]\n" " BEQ.n 2f\n" " NOP\

    1热度

    2回答

    我想重用我的C项目中一些汇编代码的函数体。假设我有一个指令序列,我想组织他们作为一个函数: void foo() { __asm__ ( "mov %eax, %ebx" "push %eax" ... ); } 然而,一个障碍是,在功能foo编译汇编代码,除了内联汇编代码,编译器也将产生这个功能有些序幕指令,整个汇编程序将成为类似: foo:

    0热度

    1回答

    我想写使用内联汇编用C离开操作的旋转,像这样: byte rotate_left(byte a) { __asm__("rol %0, $1": "=a" (a) : "a" (a)); return a; } (凡字节通过typedef unsigned char型)。 这就提出了一个错误 /tmp/ccKYcEHR.s:363: Error: operand size