| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2548 人关注过本帖
标题:C中的汇编
只看楼主 加入收藏
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
排序是吧。。八百年前的涂鸦。。

[ 本帖最后由 wxjeacen 于 2009-8-19 10:05 编辑 ]

sort.tar.gz (604 Bytes)


insertsort.tar.gz (883 Bytes)

生命不熄,战斗不止.
2009-08-19 09:54
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
这种汇编你见过吗?


程序代码:
### #PROGRAM DATA###
    .data
    .align 3
    ## value_list is the address of the beginning of the list
value_list:
            .quad 23, 50, 95, 96, 37, 85
    ## value_list_end is the address immediately after the list
value_list_end:
### #STANDARD ENTRY POINT DECLARATION###
    .section "opd", "aw"
    .global _start
    .align 3
_start:
            .quad ._start, .TOC.@tocbase, 0
### #ACTUAL CODE###
    .text
    ._start:
    ## REGISTER USE DOCUMENTATION
    ## register 3 -- current maximum
    ## register 4 -- current value address
    ## register 5 -- stop value address
    ## register 6 -- current value
    ## load the address of value_list into register 4
            lis 4, value_list@highest
            ori 4, 4, value_list@higher
            rldicr 4, 4, 32, 31
            oris 4, 4, value_list@h
            ori 4, 4, value_list@l
    ## load the address of value_list_end into register 5
            lis 5, value_list_end@highest
            ori 5, 5, value_list_end@higher
            rldicr 5, 5, 32, 31
            oris 5, 5, value_list_end@h
            ori 5, 5, value_list_end@l
    ## initialize register 3 to 0
            li 3, 0
    ## MAIN LOOP
loop:
    ## compare register 4 to 5
            cmpd 4, 5
    ## if equal branch to end
            beq end
    ## load the next value
            ld 6, 0(4)
    ## compare register 6 (current value) to register 3 (current maximum)
            cmpd 6, 3
    ## if reg. 6 is not greater than reg. 3 then branch to loop_end
            ble loop_end
    ## otherwise, move register 6 (current) to register 3 (current max)
            mr 3, 6
loop_end:
    ## advance pointer to next value (advances by 8-bytes)
            addi 4, 4, 8
    ## go back to beginning of loop
            b loop
end:
    ## set the system call number
            li 0, 1
    ## register 3 already has the value to exit with
    ## signal the system call
            sc



生命不熄,战斗不止.
2009-08-19 09:57
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
系统结构课上面还是学了一点点IBM的机器的东西的,勉强看得懂(当然是在有注释的情况下)——好吧,其实仅仅看得懂注释。主要是助记符没见过,不过结构还是比较明白的。虽然对数字做寄存器名字感到极不舒适。

麻烦wx能不能别拿假东西忽悠人?我说的很清楚是快排,你第一个是没优化的冒泡,第二个我没看,可能是插入排序吧。有汇编的快排么,真的比较想看看,注意要求是非递归版本的,至少要求比我用C写的快一点吧,GCC的内联汇编即可,不需要完全用汇编写。

还有,估计你不会听,我也姑且说说:能不能直接打包成tar.gz格式?每次下载再改名很麻烦呢,而且不是每个人都有这个耐心的。

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-08-19 19:24
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
你让我写我就要写阿?

你的脸是不是大了点?


还用内联汇编写,好意思说。

c会简化汇编里面function parameters的传递。

我估计你压根就不了解汇编的精髓。

我可以直接用汇编来控制中断器。

你要是能用汇编来读一断我指定的硬盘地址位置的数据我也许会说你汇编稍微过的去。

别拿那种垃圾小儿科的东西来跟我扯淡。

[ 本帖最后由 wxjeacen 于 2009-8-19 20:16 编辑 ]

生命不熄,战斗不止.
2009-08-19 20:03
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
不是你对IBM的那些寄存器不舒服。

而是那些是一台十几万RMB的IBM服务器上的寄存器

你能见过才有鬼了。

生命不熄,战斗不止.
2009-08-19 20:05
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
= =开始摆大侠架子了……

好吧,不想写就算了,我又不是大侠,当然不可能在操作系统代为管理了硬件以后,还傻到用汇编去控制中断器——哦,你是说中断器呢,我还以为是控制器,中断器好像在操作系统初始化以后改改指针就OK吧,控制器可能还要翻翻资料,找找IO参数。不过初始化有点麻烦,最近翻了《Linux源码完全剖析》,不过那段代码没啥印象——我果然不是做操作系统的料:-(

真奇怪了,我只是让你写一个不用递归的汇编快排,怎么就扯上了函数参数的传递了?都说了不用递归了,连函数调用都不需要,难道需要传递参数?只是一个快排,函数参数传递那一点点时间,应该可以忽略不计了吧。

读硬盘指定的位置?Win下面有个库叫做WinIO你可以看看,Linux下恐怕可以直接写脚本搞定,我的意思是,不是“看上去”很底层的东西才可以用汇编,(良好的)汇编代码的优势是速度,速度来源于其底层的特性,汇编的优势不是底层(因为那有操作系统代劳),而且多用汇编做这种事情,会让你的代码很难移植。汇编只适合加速那些纯粹算法上面的瓶颈。

IBM那个我倒是心服口服,不过好像世界上有个机构叫做,人家已经免费提供了AIX的机器供大家熟悉IBM的机器了。我想如果感兴趣,看一两个星期的manual,再ssh过去实践一下,应该不是难事吧。

不过必须要说,那个冒泡写的还是蛮简捷明了的,等会儿编译了和C写的比比看,看看哪个快~

看代码累了过来哈拉两句,不会损了大侠的面子的,放心~~~哦,对了,又写了一大段了,wx大侠最怕一大段的文字了,那直接ignore吧,断章取义就不好了。


专心编程………
飞燕算法初级群:3996098
我的Blog
2009-08-19 20:50
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
哦,对了,最近我可要找工作了,要不要帮我内部推荐一下?我也想感受一下趋势的气氛呢,而且南京很不错,离我女朋友很近~~

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-08-19 20:51
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 


怎么ssh,用putty?

ip是多少的?

生命不熄,战斗不止.
2009-08-19 20:56
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
回复 27楼 StarWing83

我去看了,用putty登录了一个

aix.

IBM的标准xlc都没有装。。

生命不熄,战斗不止.
2009-08-19 21:13
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
额?帮助里面说的很清楚呀~
starwing@starwing-desktop:~$ ssh starwing@aix.
The authenticity of host 'aix. (121.194.13.17)' can't be established.
RSA key fingerprint is f9:18:e4:a1:f6:7e:6b:b4:9f:97:54:3c:f2:26:79:36.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'aix.,121.194.13.17' (RSA) to the list of known hosts.
starwing@aix.'s password:
Permission denied, please try again.
starwing@aix.'s password:
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 5.3!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
-bash-3.00$ uname -a
AIX aix 3 5 00C97AC04C00 powerpc unknown AIX
-bash-3.00$


专心编程………
飞燕算法初级群:3996098
我的Blog
2009-08-19 21:18
快速回复:C中的汇编
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041379 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved