inline-assembly

    0热度

    6回答

    我只是测试,并试图了解汇编器是如何工作与C,所以我周围的一些教程浏览和我用C发现这一点: __asm { mov ax,0B800h //startaddress for the screen memory (in textmode) mov es,ax //add the startaddress to es xor di,di //reset

    6热度

    2回答

    下面的GCC inline asm取自LuaJit的coco库。有人可以提供一行一行的解释它的功能吗? static inline void coco_switch(coco_ctx from, coco_ctx to) { __asm__ __volatile__ ( "movl $1f, (%0)\n\t" "movl %%esp, 4(%0)\n\t"

    12热度

    2回答

    为什么打印垃圾而不是退出我的程序优雅?我在BSD上以这种方式使用系统调用,并且我想知道如何使它在Linux中工作。 int main(int argc, char **argv) { __asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* exit(0) ? */ return 0; } 谢谢。

    10热度

    3回答

    我在Linux下的汇编程序开始。我将以下代码保存为testasm.c 并将其编译为:gcc testasm.c -otestasm 编译器回复:“asm'中的不可约束”。 #include <stdio.h> int main(void) { int foo=10,bar=15; __asm__ __volatile__ ("addl %%ebx,%%eax"

    1热度

    4回答

    如何直接调用“printf”而不包括stdio.h? 我发现了一个有趣的教程在这里: http://www.halcode.com/archives/2008/05/11/hello-world-c-and-gnu-as/ 所以,这里是我的尝试: int main(){ char ss[] = "hello"; asm ( "pushl %ebp ;" "movl %esp

    7热度

    3回答

    我正在编写一个需要做一些快速数学计算的C程序。我正在使用内联SSE汇编指令来获取一些SIMD操作(使用打包的双精度浮点数)。我正在Linux上使用GCC进行编译。 我处于需要循环一些数据的情况,并且在我的计算中使用了一个常数因子。我希望在循环过程中将这个因子保存在一个安全的寄存器中,所以我不必每次都重新加载它。 要使用一些代码澄清: struct vect2 { fltpt x;

    1热度

    2回答

    我想一些内嵌汇编代码在我的C代码: __asm { mov reg,val }; 的问题:我要动态地定义寄存器和价值。 我知道'val'可以是用C代码编写的变量,但我不知道如何动态选择寄存器(即根据用户输入寄存器'dh'或'dl'来决定)。 有什么建议吗?

    1热度

    1回答

    我想在C代码中使用汇编使用C变量。 我的代码如下所示: __asm { INT interruptValue }; 其中“interruptValue”是一个变量,我从用户那里得到(例如15或15小时)。 当我尝试编译,我得到: Assembler error: 'Invalid instruction operands' 我不知道什么是正确的类型interruptValue。我试了很久\ i

    11热度

    2回答

    昨天我了解到,在针对AMD64和Itanium目标进行编译时,Microsoft Visual C++不支持内联汇编(使用__asm关键字)。 这是正确的吗?如果是这样,有谁知道他们为什么不支持内联汇编这些目标?这似乎是一个相当大的功能,只是下降...

    0热度

    2回答

    我设法将NASM设置为独立.asm文件的编译器,但是我找不到将NASM设置为内联汇编程序(__asm指令)的编译器的方法。例如, helloWorld db "Hello world !",0 不会编译(汇编程序语法错误,找到“db”)。 有没有办法做到这一点?还是我必须使用MASM或使用其他开发环境? 谢谢! PS:通过MSDN不给任何线索的方式:d