汇编代码将无符号字符转换为long

时间:2019-01-01 12:10:24

标签: assembly type-conversion x86-64

问题是这样的: 假设变量<IfModule mod_headers.c> Header set X-XSS-Protection: "1; mode=block" Header set X-Content-Type-Options nosniff Header always set Strict-Transport-Security "max-age=16070400" </IfModule> sp的声明类型为

dp

现在src_t类型是unsigned char,而dest_t类型是long。我需要使用适当的一对数据移动指令来实现该操作

src_t  *sp;
dest_t *dp;
*dp = (dest_t) *sp;

答案是这样的

*dp = (dest_t) *sp;

我的答案是这样的

movzbl (%rdi),%eax
movzq  %rax,(%rsi)

我很困惑为什么使用movzbq (%rdi),%rax movzq %rax,(%rsi) 而不是movezbl。如果movzbq中的高位字节有值,它们会影响{​​{1}}中的结果,并且结果不等于%rax

感谢您的回答。

0 个答案:

没有答案