V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dbow
V2EX  ›  Linux

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

  •  3
     
  •   dbow ·
    maliubiao · 2014-11-13 12:40:20 +08:00 · 3470 次点击
    这是一个创建于 3666 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上一贴用了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
    第 1 条附言  ·  2014-11-13 13:17:14 +08:00
    劳驾回复一下,光收藏贴子很快就沉了, 为了让更多需要的人看到。
    8 条回复    2014-11-16 14:38:14 +08:00
    Earthman
        1
    Earthman  
       2014-11-13 13:24:39 +08:00   ❤️ 1
    恩,我来帮顶
    其实贴gist也没事,一般来说都能看到的
    nevernet
        2
    nevernet  
       2014-11-13 13:37:53 +08:00   ❤️ 1
    看不懂的怎么破?
    dbow
        3
    dbow  
    OP
       2014-11-13 17:13:34 +08:00
    @nevernet 不懂C破不了。
    karllrak
        4
    karllrak  
       2014-11-13 17:56:47 +08:00   ❤️ 1
    我当时猜中了,cpuburn 就是用汇编写的.
    reverland
        5
    reverland  
       2014-11-15 10:46:21 +08:00
    弱问:

    yasm,gas,nasm这些语法是不是不太一样
    dbow
        6
    dbow  
    OP
       2014-11-15 16:09:21 +08:00
    @reverland 推荐用yasm, 它完全兼容gas, nasm。 gas, nasm稍微有些不同, 比如表示src, dst的顺序相反
    reverland
        7
    reverland  
       2014-11-16 13:51:41 +08:00
    @dbow 谢谢,其实想问……global, _start这些东西……应该是assembler特异?
    dbow
        8
    dbow  
    OP
       2014-11-16 14:38:14 +08:00   ❤️ 1
    @reverland nasm 里global表示对外公开的符号, gas写里作globl, 汇编器语法的差异容易克服, 基本不影响写代码, 可以轻松转换。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:33 · PVG 09:33 · LAX 17:33 · JFK 20:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.