免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 970 | 回复: 5
打印 上一主题 下一主题

问个汇编问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-27 10:13 |只看该作者 |倒序浏览
两句

push $0x68732f6e
push $0x69622f2f

入栈操作. 拿第一句来说是先入6e还是先入68???

论坛徽章:
0
2 [报告]
发表于 2006-02-27 10:22 |只看该作者
应该是“高位在前”
比如十进制数 12345,十六进制就是 0x3039,则在内存中(PC)就是 39 30
不同的硬件平台,数据在内存中的排列方式不同,这个我记得在 kernel 的某个 .h 文件中看到过,用 ifdef 去定义的

论坛徽章:
0
3 [报告]
发表于 2006-02-27 10:27 |只看该作者
你所说的高位在前的意思就是高位在上吧?也就是高位先入吧?

论坛徽章:
0
4 [报告]
发表于 2006-02-27 11:06 |只看该作者
我做了一个试验
C:\DOCUME~1\ADMINI~1>debug
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1366  ES=1366  SS=1366  CS=1366  IP=0100   NV UP EI PL NZ NA PO NC
1366:0100 0000          ADD     [BX+SI],AL                         DS:0000=CD
-dss:ffe0 ffee
1366:FFE0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00      ...............
-a100
1366:0100 mov ax,1234
1366:0103 mov bx,5678
1366:0106 push ax
1366:0107 push bx
1366:0108 int 3
1366:0109
-g=100

AX=1234  BX=5678  CX=0000  DX=0000  SP=FFEA  BP=0000  SI=0000  DI=0000
DS=1366  ES=1366  SS=1366  CS=1366  IP=0108   NV UP EI PL NZ NA PO NC
1366:0108 CC            INT     3
-dss:ffe0 ffee
1366:FFE0  00 00 00 00 08 01 66 13-CA 0D 78 56 34 12 00      ......f...xV4..
-

在堆栈里面,栈指针是先置顶,压栈的时候指针递减,通过压栈后对内存观察,是高位先入的

论坛徽章:
0
5 [报告]
发表于 2006-02-27 19:36 |只看该作者
再做一个试验
-d200l4
1366:0200  00 00 00 00                                       ....
-a100
1366:0100 mov ax,1234
1366:0103 mov bx,5678
1366:0106 mov si,200
1366:0109 mov word ptr [si],ax
1366:010B mov word ptr [si+2],bx
1366:010E int 3
1366:010F
-g=100

AX=1234  BX=5678  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0200  DI=0000
DS=1366  ES=1366  SS=1366  CS=1366  IP=010E   NV UP EI PL NZ NA PO NC
1366:010E CC            INT     3
-d200l4
1366:0200  34 12 78 56                                       4.xV
-

我前面说错了,应该是“高位在高内存位置”

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
6 [报告]
发表于 2006-02-28 14:48 |只看该作者
跟硬件和系统及编译器平台有关(这是废话,既然是汇编当然跟硬件有关)

x86 上c/c++ 编译的程序是高位低地址.  Little Endian
其它的平台可能不同.


Java 程序在虚拟机上运行, 总是 Big Endian
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP