社区应用 社区服务 会员列表 统计排行 帮助 银行
  • 15300阅读
  • 249回复

[开源][易语言源码] 开启E语言的64位模式。[!!27日追加重要说明]

楼层直达
发帖
138
铜币
1
威望
0
E积分
0
技术积分
0
只看该作者 20楼 发表于: 2016-12-26
Re:[易语言源码] 开启E语言的64位模式。全网最轻量和无BUG版 ..
不错不错,要是直接支持64就好了
级别: 幼儿园
发帖
24
铜币
506
威望
0
E积分
0
技术积分
0
只看该作者 21楼 发表于: 2016-12-26
Re:[易语言源码] 开启E语言的64位模式。全网最轻量和无BUG版 ..
感谢分享 支持开源精神
发帖
140
铜币
3342
威望
0
E积分
1
技术积分
0
只看该作者 22楼 发表于: 2016-12-26
回 19楼(1354092549) 的帖子
你说的是
x64模式下 执行 mov ebp, xxxxx
rbp 高位会被清除

可能当初amd设计x64指令集的时候,
没想过后来的主流编译器都省略帧指针了,
amd可能认为bp寄存器就是拿来做帧指针的,
本着能省一条是一条的逻辑,大部分rbp指令和x86的ebp是一样的。

x86的push ebp 到 x64就变成 push rbp。
mov [ebp] 寻址的也变成 [rbp]了
并没有额外的指令区分 ebp 和 rbp的寻址,
所以x64  mov ebp,xxx 直接直接改了rbp。

!!正是因为这个特性,
才要确认rbp高位被清0。

因为retf 修改cs寄存器的时候,
并不只是执行了一句汇编。
实际上是触发中断进入内核切换线程环境了。

所有的寄存器都是 从K_XXXX_THREAD_CONTEXT结构里重新赋值的
这就像调试器里,设置一个硬断或者单步,
实际上调试器只是设置线程的寄存器CONTEXT,
但线程挂起恢复的时候,内核从线程CONTEXT里赋值给DR寄存器。


、、、、、、、、
至于为什么高位可能变成不是0的状态,
正常情况,32位程序在wow64环境下,线程context里高位都会被初始化为0,
但是如果x64call调用的程序里,
下层如果使用异常处理来返回,
就有可能导致context高位变成不是0的情况
级别: 商业用户
发帖
3475
铜币
0
威望
0
E积分
0
技术积分
0

只看该作者 23楼 发表于: 2016-12-26
回 14楼(thenight) 的帖子
能GPU的64位 DLL   ,可以写 易语言. 深度学习 了
级别: 幼儿园
发帖
15
铜币
0
威望
0
E积分
0
技术积分
0
只看该作者 24楼 发表于: 2016-12-26
Re:[易语言源码] 开启E语言的64位模式。全网最轻量和无BUG版 ..
优秀文章,支持! 神马都是浮云..
发帖
1337
铜币
6211
威望
0
E积分
178
技术积分
73
只看该作者 25楼 发表于: 2016-12-26
今天大神都来论坛了
级别: 商业用户
发帖
786
铜币
2785
威望
0
E积分
1
技术积分
15

只看该作者 26楼 发表于: 2016-12-26
Re:[易语言源码] 开启E语言的64位模式。全网最轻量和无BUG版 ..
这个就厉害了...
发帖
334
铜币
2
威望
0
E积分
0
技术积分
0
只看该作者 27楼 发表于: 2016-12-26
Re:[易语言源码] 开启E语言的64位模式。全网最轻量和无BUG版 ..
易语言在64位不能运行吗
发帖
1138
铜币
1650
威望
0
E积分
0
技术积分
0
只看该作者 28楼 发表于: 2016-12-27
Re:[易语言源码] 开启E语言的64位模式。全网最轻量和无BUG版 ..
优秀文章,支持!n神马都是浮云
级别: 商业用户
发帖
1795
铜币
1077
威望
0
E积分
0
技术积分
0
只看该作者 29楼 发表于: 2016-12-27
优秀文章,支持!n神马都是浮云
快速回复

限60 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
认证码:
上一个 下一个