将数组arg的第一个值移动到xmm0中

用户名

我有一个函数可以在C中减去这样的3D向量:

inline void sub(float* a, float* b, float* r) {
  r[0] = a[0] - b[0];
  r[1] = a[1] - b[1];
  r[2] = a[2] - b[2];

Visual Studio在调试反汇编中向我展示了以下第一次分配:

r[0] = a[0] - b[0];
0078BBA8  mov         eax,4  
0078BBAD  imul        ecx,eax,0  
0078BBB0  mov         edx,4  
0078BBB5  imul        eax,edx,0  
0078BBB8  mov         edx,dword ptr [a]  <------ i guess: reading a[0]
0078BBBB  mov         esi,dword ptr [b]  
0078BBBE  movss       xmm0,dword ptr [edx+ecx]  <------ i guess: write a[0] to xmm0
0078BBC3  subss       xmm0,dword ptr [esi+eax]  
0078BBC8  mov         eax,4  
0078BBCD  imul        ecx,eax,0  
0078BBD0  mov         edx,dword ptr [r]  
0078BBD3  movss       dword ptr [edx+ecx],xmm0  

我作为汇编的新手,我不明白为什么以下行[a]代替了a

0078BBB8  mov         edx,dword ptr [a]

我本来希望edx我们应该拥有指针地址本身而不是指针处的值,因为以下几行似乎从中的地址读取值edx

0078BBBE  movss       xmm0,dword ptr [edx+ecx]

有人可以给我提示为什么这可行吗?

哈罗德

这就是调试器显示函数反汇编的方式,但这有点令人误解:a与C源代码中的东西不一样。实际指令,其被示出为mov edx, dword ptr [a]IS

8B 55 08     mov edx, dword ptr [ebp+8]

a用作ebp+8简化阅读反汇编的名称

由于这是32位代码,并且默认的调用约定在堆栈上传递了所有参数a,因此它本身不能直接使用,因此必须首先从堆栈中读取它,这就是您所看到的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将下一个值移动到第一个空行熊猫

来自分类Dev

向上移动/移动数组中的对象,然后将第一个元素移动到最后一个索引

来自分类Dev

将数组元素移动到第一个位置但保持顺序

来自分类Dev

如何将值从一个列表移动到另一个列表,同时将其从第一个列表中删除

来自分类Dev

如何将节点元素移动到其父元素中的第一个元素

来自分类Dev

SublimeText:如何绑定“ Home”键将光标移动到行中的位置0(而不是第一个非空格字符)?

来自分类Dev

SublimeText:如何绑定“ Home”键将光标移动到行中的位置0(而不是第一个非空格字符)?

来自分类Dev

Javascript-通过id更新数组中的对象并将其移动到第一个索引

来自分类Dev

将文件夹移动到自己的第一个字母目录中

来自分类Dev

根据第一个字符将目录移动到子目录中

来自分类Dev

为什么在Quicksort中进行分区之前将枢轴元素移动到数组的第一个或最后一个位置?

来自分类Dev

仅将第一个文件从任何目录移动到当前目录

来自分类Dev

如何将 JSON 对象的第一个元素移动到最后?

来自分类Dev

如何将光标移动到引号内的第一个单词?

来自分类Dev

如何将变量中存储的值向左移动,第一个值向后移动

来自分类常见问题

为什么将\ 0定义为C中char数组的第一个元素?

来自分类Dev

将Angular select ng-init设置为数组中的第一个值

来自分类Dev

如何将n维数组除以维中的第一个值

来自分类Dev

如何将父级的第一个子级中的属性移动到XSLT中的父级?

来自分类Dev

将数组中的第一个和最后一个值分组(连续的值与第一个和最后一个元素分组)

来自分类Dev

每次将新行推送到数组时,编辑数组中的第一个值

来自分类Dev

删除数组中的第一个/最后一个值

来自分类Dev

返回数组中的第一个和最后一个值

来自分类Dev

将所有数组值移动到一个索引

来自分类Dev

仅将电子邮件发送到电子邮件数组中的第一个值

来自分类Dev

我正在尝试将数组值绑定到php pdo中的一个准备好的语句,但仅绑定的数组的第一个元素

来自分类Dev

查找数组中的第一个、最后一个和中间值。返回最大的一个

来自分类Dev

PHP-计算多维数组中第一个元素中的唯一值

来自分类Dev

数组将0添加为第一个元素,而不是我的输入[java]

Related 相关文章

  1. 1

    将下一个值移动到第一个空行熊猫

  2. 2

    向上移动/移动数组中的对象,然后将第一个元素移动到最后一个索引

  3. 3

    将数组元素移动到第一个位置但保持顺序

  4. 4

    如何将值从一个列表移动到另一个列表,同时将其从第一个列表中删除

  5. 5

    如何将节点元素移动到其父元素中的第一个元素

  6. 6

    SublimeText:如何绑定“ Home”键将光标移动到行中的位置0(而不是第一个非空格字符)?

  7. 7

    SublimeText:如何绑定“ Home”键将光标移动到行中的位置0(而不是第一个非空格字符)?

  8. 8

    Javascript-通过id更新数组中的对象并将其移动到第一个索引

  9. 9

    将文件夹移动到自己的第一个字母目录中

  10. 10

    根据第一个字符将目录移动到子目录中

  11. 11

    为什么在Quicksort中进行分区之前将枢轴元素移动到数组的第一个或最后一个位置?

  12. 12

    仅将第一个文件从任何目录移动到当前目录

  13. 13

    如何将 JSON 对象的第一个元素移动到最后?

  14. 14

    如何将光标移动到引号内的第一个单词?

  15. 15

    如何将变量中存储的值向左移动,第一个值向后移动

  16. 16

    为什么将\ 0定义为C中char数组的第一个元素?

  17. 17

    将Angular select ng-init设置为数组中的第一个值

  18. 18

    如何将n维数组除以维中的第一个值

  19. 19

    如何将父级的第一个子级中的属性移动到XSLT中的父级?

  20. 20

    将数组中的第一个和最后一个值分组(连续的值与第一个和最后一个元素分组)

  21. 21

    每次将新行推送到数组时,编辑数组中的第一个值

  22. 22

    删除数组中的第一个/最后一个值

  23. 23

    返回数组中的第一个和最后一个值

  24. 24

    将所有数组值移动到一个索引

  25. 25

    仅将电子邮件发送到电子邮件数组中的第一个值

  26. 26

    我正在尝试将数组值绑定到php pdo中的一个准备好的语句,但仅绑定的数组的第一个元素

  27. 27

    查找数组中的第一个、最后一个和中间值。返回最大的一个

  28. 28

    PHP-计算多维数组中第一个元素中的唯一值

  29. 29

    数组将0添加为第一个元素,而不是我的输入[java]

热门标签

归档