V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  GeruzoniAnsasu  ›  全部回复第 123 页 / 共 148 页
回复总数  2950
1 ... 119  120  121  122  123  124  125  126  127  128 ... 148  
2019-02-01 00:29:47 +08:00
回复了 Riverrun 创建的主题 程序员 新手程序员,如何提高面向对象编程能力?
个人经验,写点 MFC 的小东西

不用什么大项目,随便什么对话框小工具就足够了

以前学编程的时候,c++看完类一脸懵逼一点概念都没,然后稍微学了学 MFC 突然开窍了,MFC 是纯 C++(C with class)搭起来的框架,没有任何扩展语法和机制,最多有点点宏,对学习 OO 编程很有帮助( c++语言限定)
想看这篇玩意的原文。。
2019-01-30 15:59:00 +08:00
回复了 doraos 创建的主题 问与答 x86 调用者保存被调用者保存寄存器数量是否分配的不太合理
@feather12315 行 8,就当做 x86 扩展到 64 位的各种架构不统一必须叫自己的名字好了

想补充吐槽一下“保存”这个词
我猜原文说的是 preserve?
在 intel 的手册 38.3.2

> As with most systems, it is the responsibility of the callee to preserve all registers except that used for returning a
value.

应该译作“保护”,我 2#的意思说反了,lz 说的东西的原意应该是

“被调函数有义务保证 rbp rbx r12~r15 这几个寄存器的值在进出函数前后一致”

如果按照 lz 的疑问是“为什么被调 routine 可以随意修改这么多寄存器的值不需要负责任”来理解的话

……只能回复说,恩,官方其实是建议负责任的,但可能现行 ABI 制定者觉得没必要
2019-01-30 15:32:05 +08:00
回复了 doraos 创建的主题 问与答 x86 调用者保存被调用者保存寄存器数量是否分配的不太合理
首先 x86 跟 x86_64 不一样。。。x86_64 一般简写成 x64

然后 bp bx r12 r13 r14 r15
vs
ax cx dx di si sp r8 r9 r10 r11
。。是咋得出被调用者保存少的结论的
2019-01-29 16:45:38 +08:00
回复了 icemanpro 创建的主题 C 如何将 list 转换成可变长参数?
@icyalala
@catror
@enenaaa
可以理解为,x64 只有一种调用约定,但有两个不同平台版本的实现
尝试在编译到 x64 的源码函数上声明 stdcall 或 cdecl 都会被编译器忽略

另外不定参函数这种东西,在 C++中必定是与变参模板同时存在的,在 C 中,变参函数实际上就是变参泛型的 approach, “运行时不定个数”类的东西不会用变参函数来写,一定会封装成某种数据结构并把指针传进去。无论 C 还是 C++,变参函数都是用来方便“静态不定个数参数的调用”的,C++通过变参模板给它加了更强的约束而已。

所以最开始就想说,参数不能像 lz 设想的那样传,传一个“运行时不定长”的东西给变参函数本来就是错误的做法
2019-01-29 14:55:07 +08:00
回复了 icemanpro 创建的主题 C 如何将 list 转换成可变长参数?
啊。。。原来 fastcall 是用 6 个寄存器
2019-01-29 14:48:35 +08:00
回复了 icemanpro 创建的主题 C 如何将 list 转换成可变长参数?
@icyalala 其实是不太想解释

首先如果是传参数进来,在函数里用 va_系列宏去解开传进来的变长参数,是可以用的,因为 x64 默认的 fastcall 约定虽然用寄存器传参,但会在栈上放一个副本,还是有地址可引用。不过放副本这个操作是被调函数的 prologue 做的,从外面打包参数进来的时候前 4 个参数还是只会通过寄存器传递。

如果非要 hack 的话确实可以内嵌一下汇编先把前 4 个参数放进寄存器其余的压栈,但这样 hack 的话连 call 也必须要用汇编嵌进去并且返回后手动 add rsp 恢复栈平衡,更要命的是在 win 和 linux 上同样是 fastcall 约定用到的寄存器还不一样,还得针对平台写两套汇编

虽然总共代码也不多,但总觉得崩的可能性太大了,想强迫 lz 先想其它的方法解决
2019-01-29 14:16:44 +08:00
回复了 icemanpro 创建的主题 C 如何将 list 转换成可变长参数?
本来想说不能这么传

然后再看了几遍。。。。foo 是已存在已定义不可改的接口吗。。那我觉得没有写法能帮你

va_list 在 x64 上没法用
2019-01-29 12:30:20 +08:00
回复了 pinews 创建的主题 宽带症候群 深思熟虑告诉你,为什么要搞 ipv6
复制粘贴:
> 我以为民科的特点就是在不了解不考虑甚至有意忽略事实原由的情况下仅凭想象推测结论。

你的想法都对,但并不是建立在事实上的
2019-01-29 11:23:44 +08:00
回复了 abclearner 创建的主题 奇思妙想 请大家学会拒绝服务攻击
我理解的拒绝服务攻击是,本来我们桌吃得好好的,结果隔壁突然有人掀桌子骂服务员搞的我们叫服务员点菜都不理我们了
2019-01-29 11:14:29 +08:00
回复了 Oathbinder 创建的主题 算法 如何设计一个二叉平衡树的 key
。。更新行号这个行为已经必定是线性的,除非每次插入时不更新所有行号

这样的话大概需要一个表记录从某行之后的所有行号进行了怎样的偏移,然后在合适的时间一次过全部更新,尽可能减少 O(n)遍历所有元素的次数让复杂度逼近 logn
2019-01-28 15:16:39 +08:00
回复了 varzy 创建的主题 问与答 有什么适合父母使用的娱乐向 app?
@terence4444 (供)娱乐 向
@horizonl 我的天……你指望能跟十几岁初中生一起好好欣赏电影?真的一起看看动画还行,晦涩看不懂的起码人少,偏偏是观看门槛低题材又大多相对严肃的电影。。。说看不懂的有一半,瞎解析的有 1/8,评论区像看中学作文,反正我是不太想在 b 站看(非动画)电影,啥时候 B 站观影人群跟豆瓣重合了可能就能看了。

哪怕矫情点小资点做作点呢,那起码算作过度表达,B 站弹幕评论区(包括长评)是什么水平,感觉就像听邻居小朋友在讨论国家大事,除了想笑不知咋形容

还不如更没营养的音乐区
??? B 站不是只有番剧动画区吗
1 ... 119  120  121  122  123  124  125  126  127  128 ... 148  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1483 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.