x86汇编linux中如何解释系统调用

2023-12-11

我对为什么/如何在 Linux 环境中的 x86 程序集中打印一个值感到困惑。

例如,如果我想打印一个值,我会这样做:

mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx msgLength
int 80h

现在我明白数值4将在中断后对sys_write进行系统调用。但我的问题是,4有什么意义?是否将十进制值4的地址加载到eax?或者将值 4 加载到eax登记?

读完后我很困惑我可以使用以下指令将地址处的值传输到寄存器:

mov eax, [msg]

eax现在将包含地址处的字节msg,但我猜这种格式是不可接受的:

mov eax, [4]

那么,当我将 4 移入 eax 来打印某些内容时,到底发生了什么?


只需将值(数字)4 加载到eax,那里没有魔法。操作系统将查看其中的值eax弄清楚你想要什么功能。系统调用号是标识您可以使用的各种可用内核函数的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

x86汇编linux中如何解释系统调用 的相关文章

  • JE/JNE 和 JZ/JNZ 之间的区别

    在 x86 汇编代码中 有JE and JNE完全一样JZ and JNZ JE and JZ只是完全相同的事物的不同名称 条件跳转时ZF 零 标志 等于 1 相似地 JNE and JNZ只是条件跳转的不同名称 什么时候ZF等于 0 Yo
  • 编译器在这里做了什么,允许通过很少的实际比较来完成许多值的比较?

    我的问题是编译器在这种情况下正在做什么 它对代码的优化程度超出了我的想象 鉴于此枚举 enum MyEnum Entry1 Entry2 Entry3 27 are the same omitted for size Entry28 Ent
  • 深入了解事物如何打印到屏幕上(cout、printf)以及我在教科书上似乎找不到的真正复杂内容的起源

    我一直想知道这个问题 但至今还没有找到答案 每当我们使用 cout 或 printf 时 它们到底是如何打印在屏幕上的 文本是如何显示出来的 这里可能是一个相当模糊的问题 无论你给我什么 我都会工作 那么基本上这些功能是如何制作的 是汇编吗
  • 如果等于特定值则替换列

    我希望替换 CSV 中的第四列 如果它等于 N A 我正在尝试将其更改为 1 我似乎无法让它发挥作用 awk F if 4 N A 4 1 test csv 您可以使用以下内容awk awk F 4 4 N A 1 4 1 OFS test
  • NASM 解析错误,需要指令

    我问过类似的问题here https stackoverflow com questions 11572021 problems with winasm and zen of assembly但我改变了汇编器 问题几乎完全改变了 所以为了避
  • 帮助我改进更多 SSE2 代码

    我正在寻找一些帮助来改进 core2 cpu 上的双线性缩放 sse2 代码 在我的 Atom N270 和 i7 上 此代码比 mmx 代码快大约 2 倍 但在 core2 cpu 下它只等于 mmx 代码 代码如下 void Conve
  • 如何从子进程为父进程设置环境变量?

    如何从子进程为父进程设置环境变量 例如 我有父进程和子进程 子进程继承自父进程环境变量 TMP VARIABLE 777 如何将子进程中 TMP VARIABLE 的值更改为 999 使其值对父进程可见 因为 TMP VARIABLE 99
  • 在linux中将数据“广播”到多个进程的规范方法?

    我有一个应用程序需要将数据流从一个进程发送到多个读取器 每个读取器都需要查看自己的流副本 这是相当高的速率 100MB s 并不罕见 因此我希望尽可能避免重复 在我的理想世界中 Linux 应该有支持多个读取器的命名管道 并为常见的单读取器
  • 如何使用Python distutils?

    我用 python 编写了一个快速程序 将 gtk GUI 添加到 cli 程序中 我想知道如何使用 distutils 创建安装程序 因为它只是命令行应用程序的 GUI 前端 所以它只能在 nix 中工作 所以我不担心它是跨平台的 我的主
  • 很好的 C 库集合? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个很好的 ANSI C 库集合 用于处理向量 哈希映射 二进制树 字符串处理等 Try g
  • Cmake 错误未定义对“pthread_create”的引用

    我对 cmake FindThreads 进行了测试 这是我的源代码test cpp和CMakeLists txt include
  • C++向量数组运算符计算成本高?

    我一直都知道 C 的丰富抽象会带来一定的计算开销 但我的印象是 一旦应用了正确的编译器优化 这种开销几乎可以忽略不计 我很好奇这种开销到底有多大 所以我编写了一个简单的测试来确定这一点 该测试是一个模板化函数 它接受一个容器变量 为容器中的
  • 我应该如何从非 root Debian Linux 守护进程登录?

    我正在编写一个新的守护进程 它将托管在 Debian Linux 上 我发现 var log 具有仅 root 写入权限 因此我的守护进程无法在那里写入日志文件 但是 如果它写入那里 它似乎将获得自动日志轮转 并且也按照用户期望的方式工作
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • 如何配置和采样英特尔进程内性能计数器

    简而言之 我试图在用户级基准测试进程中实现以下目标 伪代码 假设 x86 64 和 UNIX 系统 results for iteration 0 iteration lt num iterations iteration pctr sta
  • Zip 实用程序在 Linux 中每次都给我不同的 md5sum

    当我在 Linux 中压缩 Zip 2 31 同一个文件时 每次都会得到不同的校验和 如何保持上次的 md5sum 相同 我正在使用 yum 提供的最新 zip 更新 生成的存档不仅包含压缩文件数据 还包含 额外的文件属性 如参考zip 文
  • top命令的CPU使用率计算

    我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用率的百分比 但 top 正在使用一些 half total 来计算百分比 即在百分比上添加 0 5 在top的utils c中 以下行 在 3 8 beta1 中
  • NASM Assembly 16bit“操作码和操作数的组合无效”

    所以我正在尝试编写一个程序来创建一个文件并在其中创建我的名字 但我得到了 操作码和操作数的无效组合 这mov handle ax 我不知道为什么 我看见here https stackoverflow com questions 29569

随机推荐

  • 在 Heroku Cedar 上为 Rails 中的资源设置自定义标头

    我有一个使用 Rails 4 0 和资产管道的 cedar 应用程序 我想为资产管道中的所有资产设置自定义标头 如何才能做到这一点 一个简单的方法是使用机架插件 如下所示 class RackAssetFilter def initiali
  • 生成的签名 X.509 客户端证书无效(没有指向其 CA 的证书链)

    我使用 Bouncy Castle 生成 X 509 客户端证书 并使用已知的 CA 来签署它们 首先 我从证书存储中读取 CA 证书 生成客户端证书 并使用 CA 对其进行签名 由于以下问题 证书验证失败 无法为受信任的根颁发机构构建证书
  • Android 中的视图翻转器可以有多少个视图?

    我正在 Android 中开发一个应用程序 我想在其中显示大约 170 张图像 但我希望用户可以通过手指向右或向左查看图像 从互联网上搜索后我得到了一个解决方案 因此我在我的应用程序中使用了View Flipper 当图像计数为15时它将起
  • Matlab向矩阵添加额外的列

    我有一个大小为 216 x 3 的矩阵 我希望向该矩阵添加额外的三列 我认为很简单的事情让我发疯 我原以为它会像下面这样 myData myData zeros length myData 1 3 错误消息如下 然而 两个矩阵具有相同的行数
  • 执行与 Oracle 的连接时,“安全包中没有可用的凭据”

    上次 Windows 更新后 执行与 Oracle 数据库的连接的测试启动失败 并出现 AuthenticationException 下面提供了消息和堆栈跟踪
  • 标签之间的正则表达式,除非转义

    我围绕 Pygments 库制作了一个 PHP 包装器 突出显示代码块 用于代码块检测的正则表达式可以在配置文件 json格式 json 值看起来像这样 codeblock regex pygments pygments JSON 解码后应
  • 如何防止R中的科学记数法? [复制]

    这个问题在这里已经有答案了 我的图以 e 表示法的形式显示 y 轴上的值 我应该使用哪个命令来获取数字形式的值 文件中使用的值是数字形式吗 谢谢 要在整个 R 会话中设置科学记数法的使用 您可以使用scipen选项 从文档 options
  • C++ 后台定时器

    include stdafx h include
  • 如果关系不存在则返回节点

    我正在尝试使用 cypher 创建一个查询 它将 查找 厨师可能拥有的缺失成分 我的图表设置如下 ingredient value is part of gt ingredient ingredient 将有一个名称 染料颜色 的键 值 i
  • Symfony2 登录和安全

    有没有办法可以存储用户上次登录的时间 我正在使用 symfony2 安全配置一切正常 我见过这个基于 Symfony 2 的项目的安全性和登录 这是一个类似的问题 但它不符合我的需要 还有其他解决办法吗 您可以创建一个Authenticat
  • C# HttpClient 和 API

    我有一个 Web 应用程序 它使用 HttpClient 类从 API 中提取数据 我有几个问题 HttpClient 是从 API 获取数据的最佳选择吗 我从 APi 获取一个字符串并将其反序列化为一个对象 每次使用时都会创建 HttpC
  • Python 中如何确定范围[重复]

    这个问题在这里已经有答案了 为什么第二个函数中的第一个 print 语句会抛出错误x没有定义 x 5 def function a print x def function b print x x 7 print x 运行第一个函数会得到以
  • ubuntu 16.04 nginx 更改 phpmyadmin url 不起作用

    Ubuntu 16 04 5 LTS Xenial 4 18 8 x86 64 linode117 nginx version nginx 1 10 3 Ubuntu php v7 0 32 0ubuntu0 16 04 1 etc ngi
  • matplotlib 在 IPython 中不使用 matplotlibrc 文件

    我最近从 matplotlib v1 5 3 从 v2 0 0 升级 但通过此更改 matplotlib 在绘制图形时似乎不再使用我编辑的 matplotlibrc 文件 当我打开 matplotlibrc 文件时 我看到我的更改实际上已实
  • Shiny - 使用 for 循环插入 UI 在每个输出中返回相同的元素

    我想在我的 Shiny 应用程序中插入非预定义数量的图表 我使用了一个for循环和一系列的insertUI 问题是当我运行它时 文本元素的行为符合预期 但图形都呈现相同的图像 我怎样才能防止这种情况发生 这是一个代表 library shi
  • 复制 TreeView 节点

    我正在尝试将选定的树视图节点复制到剪贴板 以便可以将其粘贴到记事本中 这是我的代码 但它不起作用 TreeNode selNode TreeNode this treeView1 SelectedNode Clipboard SetData
  • 尝试使用正则表达式删除Python中的字符EM DASH“—”(—)

    我得到了这个顽固的 EM DASH 字符 我试图使用正则表达式删除它 但由于某种原因我无法让它工作 这是我正在使用的代码 editedSource re sub r u2014 str source 我在这里做错了什么 我很确定我得到了正确
  • 如何表达复数的四分函数

    确实存在所谓的超操作序列 它的工作原理就像你构建乘法一样a b a a a a a并添加了许多a重复b次 然后是求幂a b a a a a a与许多乘法a重复b次 然后 就出现了四联 表示为指数塔 就像a b a a a a 重复b tim
  • 将具有 Alpha 通道的图像复制到具有自定义背景颜色的剪贴板?

    Code private void Foo Canvas canvas The content is a bit larger Size size new Size canvas ActualWidth 1 1 canvas ActualH
  • x86汇编linux中如何解释系统调用

    我对为什么 如何在 Linux 环境中的 x86 程序集中打印一个值感到困惑 例如 如果我想打印一个值 我会这样做 mov eax 4 mov ebx 1 mov ecx msg mov edx msgLength int 80h 现在我明