分享 Linux 64 位汇编, timeit.asm 给需要的人.

2014-11-13 12:40:20 +08:00
 dbow
上一贴用了Gist,Gist居然被墙了, 这次改用pastebin

这份代码演示了如何处理栈, 如何调用C库函数, 如何处理返回值, 如何写分支结构, 如何处理结构里的成员运算.

其中使用了gettimeofday, fork, execvp, wait, printf

编译 yasm -f elf64 -o timeit.o timeit.asm ; gcc -o timeit timeit.o

源码: http://pastebin.ubuntu.com/8978598/

@lane0x
3307 次点击
所在节点    Linux
8 条回复
Earthman
2014-11-13 13:24:39 +08:00
恩,我来帮顶
其实贴gist也没事,一般来说都能看到的
nevernet
2014-11-13 13:37:53 +08:00
看不懂的怎么破?
dbow
2014-11-13 17:13:34 +08:00
@nevernet 不懂C破不了。
karllrak
2014-11-13 17:56:47 +08:00
我当时猜中了,cpuburn 就是用汇编写的.
reverland
2014-11-15 10:46:21 +08:00
弱问:

yasm,gas,nasm这些语法是不是不太一样
dbow
2014-11-15 16:09:21 +08:00
@reverland 推荐用yasm, 它完全兼容gas, nasm。 gas, nasm稍微有些不同, 比如表示src, dst的顺序相反
reverland
2014-11-16 13:51:41 +08:00
@dbow 谢谢,其实想问……global, _start这些东西……应该是assembler特异?
dbow
2014-11-16 14:38:14 +08:00
@reverland nasm 里global表示对外公开的符号, gas写里作globl, 汇编器语法的差异容易克服, 基本不影响写代码, 可以轻松转换。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/146151

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX