AT&T gcc程序集将char值移动为看跌期权的arg

问题描述

我正在rcx中加载字符串,并移动rcx + 8bytes并用零填充,并存储在%r8

%r8将包含0x72,72是字母“ r”的ASCII。 使用movq将r8的值移动到rdi中,使rdi为0x72。但是在调用时,我得到sigsev,无法访问0x72处的内存。为什么我不能这样做?

        .data
string:    .asciz    "Hello World!"
.global main 
.text 

main: 
    leaq   string,%rcx
    movq $4,%rax 
    movzbq 4(%rcx,%rax,1),%r8 
    movq %r8,%rdi
    call puts

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)