相关疑难解决方法(0)

以x86汇编语言获取EAX寄存器的第一位

在x86汇编语言中,是否可以获得寄存器的第一位?我想获得eax寄存器的第一位并将其移入ebx,但我不知道该如何做到这一点.

.stack 2048

.data

ExitProcess proto, exitcode:dword 

.code
start:
mov eax, 3;
;now I want to move the first bit of eax into ebx. How can I obtain the first bit from eax?
invoke  ExitProcess, 0
end start
Run Code Online (Sandbox Code Playgroud)

x86 assembly

0
推荐指数
2
解决办法
1万
查看次数

x86程序集从32位寄存器获取一个字节

我是x86汇编语言的programmig,我发现了一个问题.我调用C函数getch从stdin获取单个字符.但问题是返回值存储在寄存器EAX中.我想知道如何获得一个角色.不是4字节值.谢谢.

c x86 assembly getch

0
推荐指数
1
解决办法
2803
查看次数

使用RSI/RDI vs r8-r15(速度优化)

我想尽可能地优化我的函数,我做的一件事就是使用r8作为指针,因为这是指针在x64函数中被推入的寄存器.

但是推送RSI或RDI,将指针移动到它们并在循环中更快地使用它们?

例如,mov [RSI],DL;将编译为2个字节和:mov [r8],DL; 将编译为3个字节

所以,如果我做了100到200次循环,r8会因为要解码的额外字节而变慢吗?或推动RSI并移动指针消除任何可能的速度增加?显然push和mov会在循环外发生.

optimization assembly x86-64 masm micro-optimization

0
推荐指数
1
解决办法
129
查看次数

组件8086乘以41而不使用MUL

我想知道是否有一种无需使用MUL或DIV指令即可执行任何乘法或除法的方法,因为它们需要大量的CPU周期。我可以针对该目标利用SHL或SHR指令吗?如何实现汇编代码?

我需要特定数字的帮助-我如何bx仅用5个命令就能乘以41?

每当我尝试解决问题时,我至少会得到6条命令...

我的代码:

    mov ax,bx
    mov cx,bx
    shl bx,5    ;  *32
    shl ax,3    ;  *8
    add bx,ax   ; *40 
    add bx,cx   ; *41
Run Code Online (Sandbox Code Playgroud)

x86 assembly x86-16

0
推荐指数
1
解决办法
969
查看次数

为什么这段代码打印由 clang 和 gcc 编译的不同值?

汇编:

.intel_syntax noprefix
.global Foo
Foo:
    mov ax, 146
    ret
Run Code Online (Sandbox Code Playgroud)

主要.c:

#include <stdio.h>

extern int Foo(void);

int main(int argc, char** args){
    printf("Asm returned %d\n", Foo());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我编译并链接:

(compiler name) -c asm.s -o asm.o
(compiler name) asm.o main.c -o  main
./main
Run Code Online (Sandbox Code Playgroud)

我正在使用 Windows 和 LLVM 的 x64 windows 二进制文件。

GCC 打印 146(如预期),但 clang 生成的代码打印随机值,为什么?在 Windows 上使用 gdb 调试 clang 二进制文件显然存在一些问题,因此我无法提供任何 gdb 日志。GCC 二进制文件正在执行我期望的操作,但不是 Clang。

c assembly x86-64 calling-convention

0
推荐指数
1
解决办法
86
查看次数

x86帮助旋转有效位

x是存储在ebx中的一些整数...如何将4个最高有效位旋转1,同时保留4个最低有效位?其中0xABCDEF12旋转到0xDABCEF12

x86 assembly

-1
推荐指数
1
解决办法
217
查看次数