我刚刚开始学习linux 64bit程序集,并试图真正理解lea和mov之间的差异。
但是在创建测试文件时,我遇到了一个分段错误,我只是不明白为什么。问题出现在示例代码中的# file_object = storage.open(file[0].file.path, mode='rb')
file_object = storage.open(file[0].file.name, mode='rb')
。但当我用mov r10,[rax]
更改mov r10,[rax]
的位置时,我会在执行lea时遇到错误。
我的节目:
lea r11,[rax]
答案 0 :(得分:2)
您对内存位置16(0x10)的期望是什么?
您的代码是
mov rax,16
mov r10,[rax]
表示您尝试将内存地址RAX
中的64位值加载到R10
。地址16通常不会映射到您的程序空间。