- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
从教程中我了解到 movsb 会将数据从 ds:si
复制到 es:di
。但就我而言,它不起作用。
section .text
global _start
_start:
mov esi,s1
mov edi,s2
cld
rep movsb
mov edx,20
mov ecx,s2
mov ebx,1
mov eax,4
int 80h
mov eax,1
int 80h
section .data
s1 db 'qwerty',0
section .bss
s2 resb 20
最佳答案
当 Linux 启动您的进程时,您的所有寄存器(包括 ECX)都将为零,ESP 除外。 (ABI 说他们可以容纳垃圾,但 Linux 选择零以避免信息泄漏。)
因此rep movsb
将复制零字节。是 memcpy,不是 strcpy,它不看数据。
这就是为什么您的程序不会像您期望的那样在没有先设置 ECX 的情况下使用 rep movsb
崩溃。
关于linux - movsb asm 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51669461/
从教程中我了解到 movsb 会将数据从 ds:si 复制到 es:di。但就我而言,它不起作用。 虽然尝试使用 gdb 进行调试,但我无法打印分别在 .data 部分和 .bss 部分中清除的 s1
我正在检查使用最新版本的 VS 2017 C++ 编译器完成的项目的发布版本。我很好奇为什么编译器选择构建以下代码片段: //ncbSzBuffDataUsed of type INT32 UINT8
什么 x86 寄存器表示 movsb 指令中的源位置? 最佳答案 在 32 位模式下,esi。 具体而言,movsb 将一个字节从 ds:esi 复制到 es:edi,然后递增或递减两个 esi 和
我正在尝试编写一个 8086 汇编程序来连接两个给定的字符串。为此,我使用了“REP MOVSB”指令,但该程序运行不佳。所以我写了一个应该静态连接两个字符串的程序,但似乎“REP MOVSB”对字符
我正在尝试编写一个 8086 汇编程序来连接两个给定的字符串。为此,我使用了“REP MOVSB”指令,但该程序运行不佳。所以我写了一个应该静态连接两个字符串的程序,但似乎“REP MOVSB”对字符
我是 asm 的新手,正在尝试使用一些操作码来获取它。我在 64 位 linux 上工作,并且在使用 movsb 时总是出现段错误。我用 nas 编译: nasm -f elf64 test.asm
我很快就有了一个组装测试,在准备的时候,我注意到了一些奇怪的事情。repe movsb在 ZF=0 时重复,我被告知 repe应该在 CX 不等于 0 和 ZF=1 时重复。 我做了一些测试,发现之前
这个question让我想知道,当前的现代编译器是否曾经发出REP MOVSB/W/D指令。 基于此discussion,似乎在当前CPU上使用REP MOVSB/W/D可能会有所帮助。 但是无论如何
我是一名优秀的程序员,十分优秀!