设为首页收藏本站

ISO/IEC C++ China Unofficial

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 335|回复: 15

汇编还是要懂的

[复制链接]

1

主题

21

帖子

80

积分

注册会员

Rank: 2

威望
0
经验
59
贡献
0
发表于 2015-12-1 23:16:10 | 显示全部楼层 |阅读模式
寄存器,汇编指令,伪指令,段,寻址。不会汇编,会编也行啊。。
回复

使用道具 举报

10

主题

108

帖子

461

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
342
贡献
3
发表于 2015-12-1 23:20:31 | 显示全部楼层
没什么必要,层次不同。

C艹 有对实现的妥协,不过如果像谭×一样试图用实现解释语义,或者以为语义就是实现,或者以为语言本身质量和实现质量成正比的,只能呵呵。
We will prevail!! www.lhmouse.com
回复 支持 反对

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
发表于 2015-12-1 23:23:47 | 显示全部楼层
本帖最后由 moecmks 于 2015-12-2 01:44 编辑

现在用汇编基本就贪图Simd的速度了,写memcpy,图像处理快多啦
#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复 支持 反对

使用道具 举报

10

主题

108

帖子

461

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
342
贡献
3
发表于 2015-12-1 23:54:45 | 显示全部楼层
moecmks 发表于 2015-12-1 23:23
http://ideone.com/tL4F9w 现在用汇编基本就贪图Simd的速度了,写memcpy,图像处理快多啦 ...

手写 SIMD 要注意好多事情的,有时候交换两条指令顺序速度都会不一样,换处理器又会差很多,所以后来没再搞了。
(提一点,core 2 的处理器上将具有依赖关系的指令堆在一次而不是手动乱序反而运行比较快,这点和 amd 的处理器相反。)

顺带晒晒这个旧货:
https://github.com/lhmouse/MCF/blob/master/MCF/Hash/Sha256.cpp
We will prevail!! www.lhmouse.com
回复 支持 反对

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
发表于 2015-12-2 00:25:56 | 显示全部楼层
本帖最后由 moecmks 于 2015-12-2 01:44 编辑
LH_Mouse 发表于 2015-12-1 23:54
手写 SIMD 要注意好多事情的,有时候交换两条指令顺序速度都会不一样,换处理器又会差很多,所以后来没再 ...

LH_Mouse大神,久仰已久。之前在C++吧见过你几年写的Simd memcpy了,MCFCRT\stdc\string\memcpy.c 内的源代码中,有一点不明白,实际上nt族指令会降低拷贝性能,在msvc的memcpy.asm源代码中我也没看到使用nt族指令 此条指令按照我的理解是在读的时候可以利用cache加速读取,写的时候使用NT系列指令降低cache污染,在利用mfence等指令实现串行化可以提高效率,实际上我使用的时候基本是慢得多的

#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复 支持 反对

使用道具 举报

10

主题

108

帖子

461

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
342
贡献
3
发表于 2015-12-2 00:50:44 | 显示全部楼层
本帖最后由 LH_Mouse 于 2015-12-2 00:53 编辑
moecmks 发表于 2015-12-2 00:25
LH_Mouse大神,久仰已久。之前在C++吧见过你几年写的Simd memcpy了,MCFCRT\stdc\string\memcpy.c 内的源 ...
  1.   "        cmp " __RCX ", 64 * 1024 * 16 \n" // 16 MiB
复制代码
仅对 sizeof(xmmword) * 64 * 1024 * 16 以上启用 non-temporal move。That's it.
嘛,顺带提一句,因为这里写 CRT 所以用了很多 reserved identifier,别处不要这样写。

点评

吱吱老司机!  发表于 2015-12-2 11:37
We will prevail!! www.lhmouse.com
回复 支持 反对

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
发表于 2015-12-2 01:43:41 | 显示全部楼层
恩,话说刚刚不久测试了一下,NT指令确实快些。[看来之前的测试有问题]
#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复 支持 反对

使用道具 举报

8

主题

64

帖子

269

积分

超级版主

Rank: 8Rank: 8

威望
12
经验
169
贡献
12
发表于 2015-12-2 10:26:37 | 显示全部楼层
基本不能读写

点评

卖弱啦!  发表于 2015-12-2 11:18
回复 支持 反对

使用道具 举报

1

主题

16

帖子

71

积分

超级版主

Rank: 8Rank: 8

威望
0
经验
55
贡献
0
发表于 2015-12-2 10:48:49 | 显示全部楼层
汇编? 以前懂辣么一点点, 大学时研究过, 毕业设计写内核时用到过, 不过工作以后没用过, 已经不熟悉了

点评

居然写内核,膜拜大(si)神(ji)。  发表于 2015-12-2 11:19
回复 支持 反对

使用道具 举报

1

主题

16

帖子

142

积分

注册会员

Rank: 2

威望
0
经验
126
贡献
0
发表于 2015-12-2 13:04:57 | 显示全部楼层
不懂呀,也不想学,后果严重吗?

点评

摸头。  发表于 2015-12-3 01:51
后果就是不能成为一名合格的绅士゚ ˖ ٩( 'ω' )و ˖゚キラー  发表于 2015-12-2 17:01
回复 支持 反对

使用道具 举报

0

主题

6

帖子

37

积分

新手上路

Rank: 1

威望
0
经验
31
贡献
0
发表于 2015-12-3 11:48:46 | 显示全部楼层
啊,以前学了一点汇编知识。
基本都用在了反汇编破解一些奇怪的东西上了
比如超级简单的破解cd验证(逃
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|ISO/IEC C++ China Unofficial    

GMT+8, 2017-6-24 01:08 , Processed in 0.079213 second(s), 34 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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