assembly

    0热度

    1回答

    这是第一次我写汇编代码。 在第一个开始,我写了 #include<stdio.h> int main(){ int x,y; asm("movl $2,%eax"); asm volatile( "movl $1,%0\n\t" "movl %0,%%ebx\n\t" "leal 2(%%ebx,%%eax,$2)

    0热度

    1回答

    所以,最近我一直在服用装配类,其中一人给了我一个任务。我编码了除最后一部分以外的所有内容...我只需要在给定数组中添加数字并打印总和...容易吧? 没有,我当我运行它说,该行12超出范围出于某种原因有一个错误=/ 所以,这里是我的代码: .data array: .word 1,2 size: .word 2 la $s0, array lw $s1, size li $t9, 0

    3热度

    1回答

    我正在使用Intel x64程序集NASM编译器,试图将“0x4000000000000000”常量移动到内存中,ieee 754标准中的double值应该等于2.0。 我正在使用的代码是: %define two 0x4000000000000000 section .text foo: push rbp mov rbp, rsp mov QWORD [rdi], two

    -1热度

    1回答

    我想用下面的代码钩住键盘ISR,但我不能,因为DeviceIoControl API返回ERROR_INVALID_FUNCTION。这里是我的代码: invoke DefineDosDevice,[raw],filename1,devicename lea rcx,[filename2] invoke CreateFileA,rcx,GENERIC_WRITE,0,0,OP

    1热度

    1回答

    我正在编写一个程序来确定一个整数是偶数还是奇数。该程序首先要求用户输入一个整数,并根据该整数是什么来打印“偶数”和“奇数”。我无法创建If-else语句。 该语句应该是,如果$ t2 = $ t0,则输出“Odd”,否则输出“Even”。这是我现在已经不工作的代码($ T1 = 1,$ T2 =用户与1整数AND'd,odd_str = “奇”,even_str = “连”): bne $t2,

    1热度

    1回答

    我编译: " int x_add(int a, int b) { return a+b; } " ,并得到 " push ebp mov ebp,esp mov edx,[ebp+08] mov eax,[ebp+0c] pop ebp ret " 我简化了组装到 " mov eax,[esp+0c] add eax,[esp+08] ret "

    2热度

    1回答

    经过大约100亿次测试后,如果imm64比AMD64的m64快0.1纳秒,m64似乎更快,但我不太明白。以下代码中的val_ptr的地址不是本身的立即值吗? # Text section .section __TEXT,__text,regular,pure_instructions # 64-bit code .code64 # Intel syntax .intel_syntax n

    -1热度

    1回答

    我想从用户输入的数字倒数,并希望显示数字和0之间的所有整数。我的输出我相信去然后它在1处进入无限循环。它似乎永远不会变为零。 我刚开始学习大会,所以如果这是一个糟糕的问题,我会提前道歉。 感谢 这里是我的代码: .globl main .data msg: .asciiz "Input a number: " x: .word 1 .text main:

    -5热度

    1回答

    考虑你有一个带有AND,OR,XOR,NOT和2个寄存器的处理器X & Y. 什么是交换2个寄存器值的最聪明的方法?

    0热度

    1回答

    我试图为PIC16F设备 clrf BIT bsf REGISTER,BIT 这给编译错误做到这一点。 但是,这样做 clrf BIT movf BIT,W bsf REGISTER,W 没有给出编译错误。 我做得对吗,还是有一个聪明的方法来完成它?