c - 这个大会到底在做什么?
问题描述
我有一个正在阅读的汇编代码,代码中有以下部分:
mov $0x28,%esi
mov %rax,%rdi
callq <strchr@plt>
mov %rax,%rbx
test %rax,%rax
jne somewhere
我在这段代码中遇到了一些困难。第一步移动0x28
到注册%esi
。第二个移动%rax
到%rdi
,然后它移动到strchr(char *rdi, char *esi)
。因此,基本上它返回指向 ascii 之后第一次出现的指针0x28
,即'('
. 然后最后一个测试告诉我它正在测试字符串 atrdi
是否有'('
字符。如果没有,则test %rax, %rax
设置 ZeroFlags,并且jne
不会执行。我的理解正确吗?
我还有一个问题是,当我尝试检查%esi
第一个之后的确切内容时mov
,我使用了命令p (char *)$esi
ingdb
但得到了输出<error: Cannot access memory at address 0x28>
。谁能告诉我如何查看内容$esi
?
解决方案
推荐阅读
- javascript - 有没有办法在不分页的情况下使用 jqGrid 加载大数据
- laravel - 具有自定义登录的 Laravel 5.4 无法重定向
- google-app-engine - Google App Engine Standard 上的 NLTK 停用词
- macos - 使用苹果脚本复制然后执行终端命令
- python - Keras 模型输出形状为“(无,)”
- python - 检查同一列中是否有类似的字符串
- asp.net-core - 在 VS 2019 社区中将 Chromium 设置为默认浏览器
- javascript - Electron - 如何控制系统媒体(播放/暂停)?
- scala - 使用日志过滤一组 Either[x, y]
- amazon-dynamodb - Dynamodb 本地 Web Shell 不显示表格