加载论坛时出错,请强制刷新页面重试。

在学习 LoongArch 汇编时遇到的问题,请问有人能给我解答吗?

LEI-Xiongwei

xry111 请问大佬,做C语言底层库的适配优化工作是需要写纯汇编,还是只要C源码上的内嵌汇编?


xen0n

LEI-Xiongwei 做C语言底层库的适配优化工作是需要写纯汇编,还是只要C源码上的内嵌汇编?

显然是根据需要而灵活选择。一般是不喜欢很多汇编的,因为不好维护,一般将其控制在必须的最低限度即可。


LEI-Xiongwei

xen0n xry111

loongarchglibc.pdf
3MB

各位大佬,我想要复现这篇论文里的工作,本以为只需要在原来的C代码上进行内嵌汇编,但我联系上了该文的指导老师,他告诉我说他们用的纯汇编。这篇文章的源代码应该是与龙芯签了保密协议的不能提供给我。那么我该如何将多个汇编源文件与源glibc一起编译,再一起跑Unixbenchmark呢?


xen0n

LEI-Xiongwei 不需特别折腾。这文章的作者现在是龙芯员工了,文章里提到的东西都已经进入上游glibc,对着函数名找具体实现方式就行了。


LEI-Xiongwei

xen0n 最新版本的glibc 2.38 里面的字符串处理函数变得挺抽象的,我还没找到对应的汇编在哪儿。 😅


LEI-Xiongwei

xen0n 我在glibc 2.38 的 sysdep/loongarch 目录下没有找到跟字符串优化相关的汇编代码。


Sunny

LEI-Xiongwei
在 "https://sourceware.org/git/glibc.git" 所在的仓库中查看git log,"dengjianbo" 大佬应该是相关补丁提交者


LEI-Xiongwei

Sunny 网址打不开。


LEI-Xiongwei

Sunny 非常感谢! 😃


LEI-Xiongwei

打开了,应该是梯子的问题。


LEI-Xiongwei

@xen0n @Sunny 为什么这段代码可以直接用C语言的“#include”和宏定义,又可以直接写汇编,内链汇编不是要用asm()包起来的吗?


狗剩

LEI-Xiongwei .S结尾,这是汇编文件,需要预处理,leaf()是一个叶子函数


狗剩

你可以看一下我写的一个gforth的后端的汇编代码,可以利用他查看code字,都是用的汇编指令


狗剩


LEI-Xiongwei

狗剩 所以说“#include”,“#define”这些其实是汇编指令?


xry111

LEI-Xiongwei 大写 .S 的汇编文件先用 C 预处理器处理再汇编,小写 .s 直接汇编。

这里是大写 .S 所以会先用 C 预处理器过一遍。


狗剩

这是宏,但可以用gcc进行预处理


狗剩

不是汇编指令


LEI-Xiongwei

xry111 Xi Ruoyao 大佬您好,请问你们在OpenSSL的MD5汇编实现中为什么没有用原来X86中用的cfi呢?


xry111

LEI-Xiongwei 不是我写的。而且好像除了 x86 以外都没有用 .cfi_*。

这个东西应该只对 C++ 异常处理 (但是 OpenSSL 是 C),以及提高调试和性能分析的精确度有用,可能大家目前还没有这么高的精确度要求?或者由于某种原因别的架构上没有这个东西精确度也凑合够用,而 x86 上直接爆炸?我不是很清楚。


LEI-Xiongwei

xry111 好的,谢谢您的解答。


« 上一页

知识共享许可协议
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权。
进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途