V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  amiwrong123  ›  全部回复第 5 页 / 共 35 页
回复总数  697
1  2  3  4  5  6  7  8  9  10 ... 35  
@feather12315
特定的寄存器是硬件行为
=======
确实,汇编中找不到更新 LR 寄存器的指令(即函数调用前,把函数调用的下一个指令 作为返回地址)。但这个事应该是硬件来做的。
@thinkm
@leonshaw
@bugu1986
@feather12315

另外,我猜是不是应该这么理解?

保存 Caller saved 寄存器的行为是一个可选项,如果在函数调用后 不需要使用到 Caller saved 寄存器,那么在调用之前,也就不需要有保存 Caller saved 寄存器的行为了。

Caller saved registers–– If the
data in these registers needs to be used after a C function call, the caller needs to save it
before calling a C function.
文档原话如上。
@thinkm
@leonshaw
@bugu1986
@feather12315
之所以我能确信,保存 Callee saved 寄存器的行为,是一个软件行为。是因为我在编译后查看汇编文件,发现大多数函数的实现,在开头部分有 PUSH {r4-r11, lr},在结束部分有 POP {r4-r11, PC}。——即我发现了汇编中的 保存 Callee saved 寄存器的行为。

但我没有找到汇编中,保存 Caller saved 寄存器的行为。虽然我也认为,应该是一个软件行为(最起码在函数调用中,应该是的。在响应中断时,就得另当别论了)。有找到两处 POP {r0}的用法( r0 是 Caller save 的),但也不是正常的函数调用时在用(我希望是调用了 POP {r0}后,马上调用函数,但并不是这么用的),其中一个用的地方是__rt_exit 和_aeabi_uldivmod
300 天前
回复了 amiwrong123 创建的主题 问与答 Zotero 如何折叠全部大纲?
@aitianci
这个软件居然找到没有这个 折叠大纲 的功能。其他地方用着还是很顺手的
300 天前
回复了 amiwrong123 创建的主题 问与答 Zotero 如何折叠全部大纲?
@chikai
对,就是各级标题。
一般 pdf 都有 很多各级标题呀。比如国外英文技术书籍。
@yvkino
奇怪了,老哥可以反馈一下,你的 FSCapture 版本和 SumatraPDF 版本吗
334 天前
回复了 amiwrong123 创建的主题 问与答 该怎么找回流量卡的微信账号?
试了申诉找回密码,到了身份验证 那一步,输入我自己的身份证信息居然不对。看来必须 输入 绑定这个微信账号的身份证信息了?这我上哪儿知道去啊
@yanzhiling2001
老哥,那你被坑得有点惨哦。
那当初你本来是想:你和那个女生,一起和房东签整租合同 呗
@FrankAdler
哈哈,所以你选择了当二房东吗
@HugoChao
所以是 房东和两个人 分别签了个 单间的合同 呗
2023-02-20 12:27:44 +08:00
回复了 amiwrong123 创建的主题 程序员 如何理解 向下拓展的段的实际界限值?
有没有大佬帮忙看下这个理解是否正确~
2023-02-02 22:33:38 +08:00
回复了 amiwrong123 创建的主题 问与答 去培训班学个网络安全,怎么样?
@l1ve #1
@westoy #2
@djoiwhud #3
确实是。之后我看 劝劝他,哎,总感觉 很多行业外的人 就像培训培训进来 赚钱。但我想说,其实也是有门槛的啊。

而且再不济,学个 java 或者前端也好多了呀。

虽然我有点不喜欢培训班,感觉他们也没教个啥东西。但是那种学习氛围 还是可能很多人 入门需要的,入门以后就自己学。当然,毕业了他们在面试的时候,也会提供一定的技巧。。
2023-01-10 21:30:47 +08:00
回复了 amiwrong123 创建的主题 程序员 x86 汇编 CPU 是如何使用 loop 指令的操作数的?
@cpstar #2
你说的有点道理,不过感觉 CPU 处理有点麻烦阿,

因为自身的地址 0x0000_004A 是要作为无符号数的,然后操作数则要作为一个 有符号数 来处理(毕竟还可能向 第 9 个 bit 产生进位或借位)。
2023-01-06 22:10:38 +08:00
回复了 amiwrong123 创建的主题 程序员 救救孩子, bochs 虚拟机怎么开始调试?
用错程序了。。
@ihciah #7
恕我孤陋寡闻,SDM 是什么,什么网址吗

看完这本书,我也想实现一遍 书里的程序。
@ssgong #6
@Nerv #8
意思好像理解了。看起来处理器好像在搞“特殊化”呢
- 处理页内偏移时,如果是普通的物理页,那么没有变化。
- 处理页内偏移时,如果是页目录表,那么需要对 页内偏移乘以 4 再相加。

但是感觉处理器好像没有这种“能力”做这种特殊化吧,处理器它是 怎么知道的呢。。
@WuSiYu
好像理解你意思,但是有点说不通呀。
首先,谁也没说这个虚拟地址,必须是四字节对齐的吧。
第二,假设必须虚拟地址四字节对齐。他也没必要让这个虚拟地址的低 12bit 先右移两位吧,然后到了算物理地址的时候,又要把这 12 个 bit 给左移两位回来==
为了防止内容不完整,我这里给出 这个巧妙过程的 全过程。下面贴图:
![]( https://s3.bmp.ovh/imgs/2022/12/23/03712a39c1313798.png)
@heiher #1
但好像不是呀,你能看到 括号里写的是 “做页用”。所以最后这图,已经是在 访问数据页了。

这个巧妙的用法也把我搞得有点晕了。。
@ihciah #3
原来 LDTR 寄存器里面有三个东西,segment selector, base linear address, limit

但好像还是不明白,这三个东西,既然已经有了 segment selector ,那还需要 base linear address, limit 干什么,毕竟一个段选择子指向一个段描述符,而一个段描述符其实就是包含了基地址和界限。
1  2  3  4  5  6  7  8  9  10 ... 35  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3377 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 11:38 · PVG 19:38 · LAX 04:38 · JFK 07:38
Developed with CodeLauncher
♥ Do have faith in what you're doing.