inline-assembly

    0热度

    1回答

    随着内联汇编在GCC,您可以用"i"约束指定立即汇编操作数,像这样: void set_to_five(int* p) { asm ( "movl %1, (%0);" :: "r" (p) , "i" (5) ); } int main() { int i; set_to_five(&i);

    0热度

    1回答

    我有一个程序来接受用户输入(与用户想要输入的一样多),并计算程序集中的平均值。即使通过使用xor和mov eax清零寄存器,0;我无法让这个号码出来。感谢您提前提供任何帮助! 样品I/O: 70 88 90 77 -1 我得到的答案永远是一个非常高的数字 #include <iostream> using namespace std; int score = 0, avg = 0,

    -3热度

    1回答

    我们先从一个32位代码如:“AA BB CC DD”(小端) 我们要“AA DD CC BB”作为最终结果(大端)。 我已经设法将它写入8行,其中%ebx作为条目,%ecx作为出口。老师提到可以用不到4行的方式写这个,3是记录。我很好奇看看它如何缩短。 mov %R1, %ebx mov %bx, %cx shl $16, %ecx mov %cl, %dl mov %bl, %cl m

    1热度

    2回答

    我只是想知道是否可以内联编写外部.asm文件中的汇编函数。我的应用程序是64位模式,因此无法使用内联汇编器(我正在使用Visual Studio C++)。 在此先感谢

    5热度

    1回答

    我正在修改舍入模式(+ inf,-inf,最接近或截断)的Rust箱子。 是改变舍入模式的功能是使用内联汇编语言编写: fn upward() { let cw: u32 = 0; unsafe { asm!("stmxcsr $0; mov $0, %eax; or $$0x4000, %eax; mov %eax, $0;

    4热度

    1回答

    我想在parasoft C++测试软件中编译和测试示例嵌入式汇编代码。 源代码: #include <stdio.h> void example() { int arg1, arg2, add, sub, mul, quo, rem ; printf("Enter two integer numbers : "); scanf("%d%d", &arg1, &arg2); __asm

    0热度

    1回答

    下面的代码只是试图将数据从'in *'数组复制到'out *'数组,但在第一个vst1.32指令中出现段错误,但是为什么? int* in0 = new int[4]{ 0x0, 0x1, 0x2, 0x3 }; int* in1 = new int[4]{ 0x4, 0x5, 0x6, 0x7 }; int* in2 = new int[4]{ 0x8, 0x9, 0xA, 0xB };

    0热度

    1回答

    我知道,在使用GCC使用内联汇编器时,可以使用关键字volatile修饰汇编部分,以防止优化器移动。 在Microsoft C++中是否存在类似的事情,或者默认情况下优化器是否仅保留内联代码?

    0热度

    1回答

    该标题可能看起来令人困惑,但是,如何在不修改内存的情况下修改子程序? 我想要做的事情基本上是NOP子程序(有效使它无用),而无需修改内存或产生相当于此的东西......这可能吗?

    0热度

    1回答

    我最近进入了gcc的内联汇编,并具有基本的汇编知识,我理解如何使系统调用相当好,直到我试图用一个或多个参数执行一个简单的sys_execve。 如果我没有传递任何附加参数,系统调用execve可以正常工作,并且在尝试传递任何参数时仅运行不带参数的可执行文件。 #include <stdio.h> char *argv[]={"/bin/echo","parameter test", NULL}