hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 839|回复: 1

std::midpoint實現

[复制链接]

585

主题

769

帖子

2007

积分

大司空

Rank: 5Rank: 5

积分
2007
发表于 2023-12-17 16:37:30 | 显示全部楼层 |阅读模式
按照C++20標準,std::midpoint需要輸出:
Half the sum of a and b. No overflow occurs. If a and b have integer type and the sum is odd, the result is rounded towards a.
對無符號數這相對簡單,rcr能包含進位視爲一個65位的臨時變量
  1. Timeline view:Index     012345[0,0]     DeER .   cmpq        %rsi, %rdi[0,1]     DeER .   movq        %rsi, %rax[0,2]     D=eER.   adcq        %rdi, %rax[0,3]     D==eER   rcrq        %rax
复制代码
但有符號數呢?
cycle數第一考慮,覆蓋輸入寄存器第二考慮,臨時寄存器數量第三,長度第四(有別的評價標準再說)
回复

使用道具 举报

0

主题

183

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-12-17 16:38:25 | 显示全部楼层
mca說這是4cy
  1. [0,0]     DeER ..   xorl        %ecx, %ecx[0,1]     DeER ..   cmpq        %rdi, %rsi[0,2]     D=eER..   setl        %al[0,3]     DeE-R..   sarq        %rsi[0,4]     .DeER..   adcl        %ecx, %ecx[0,5]     .DeER..   sarq        %rdi[0,6]     .D=eER.   sbbb        %cl, %al[0,7]     .DeE-R.   movq        %rsi, %rax[0,8]     . D=eER   adcq        %rdi, %rax
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 03:14 , Processed in 0.070833 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表