AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题

问题[assembly](computer)

Martin Hope
TaromaruYuki
Asked: 2022-07-09 15:22:25 +0800 CST

汇编程序/CPU 如何处理变量?

  • 3

最近我真的很喜欢硬件,一直在研究 CPU 的工作原理。为此,我一直在为组成的 CPU 架构制作汇编程序、反汇编程序和 vCPU。

我学到了很多东西,但有些东西我还是不明白。汇编程序/CPU 如何处理变量?

据我了解,局部变量被分配并存储在堆栈中。但是当 CPU 到达一条需要局部变量值的指令时,它怎么知道它在堆栈中的什么位置呢?汇编器不能在编译时输入地址,对吧?

我不太了解全局变量,除非您在.data部分(x86 asm)中有它们。当 CPU 到达需要全局变量值的指令时,它如何知道它在内存中的位置?不是每次运行程序都在不同的地方吗?那么汇编器不能给它一个地址,对吧?

我一直在到处寻找答案,但还没有找到。

cpu assembly
  • 1 个回答
  • 56 Views
Martin Hope
Anchith Acharya
Asked: 2019-09-10 23:54:59 +0800 CST

内存位置地址实际上是如何存储在 cpu 中的?

  • 5

我一次又一次地看到内存位置的表示,它被描述为矩形框的线性阵列,其各自的内存地址位于左侧。现在,这些地址一般写成2000、2004、2008...等。(我想对于 32 位机器)。

根据所述系统,内存位置只是普通整数。但是当我在 C/C++ 中打印出地址时,它们会显示为字母数字字符串。另外,如果它们实际上只是整数,那会不会有问题,因为包含像 2000 这样的数值的寄存器(比如 R1)可以突然充当指向内存位置的指针,只需将其括在括号中?像这样: (R1) - >this 将指向内存位置 2000

(顺便说一句,那是汇编语言)

那么内存地址究竟是如何存储在内存中的呢?

memory-management assembly
  • 3 个回答
  • 1061 Views
Martin Hope
Ri1a
Asked: 2019-08-14 01:13:23 +0800 CST

尝试编译 .hla 文件时出现转换错误

  • 5

我最近开始学习汇编语言,阅读 Randall Hyde 的《汇编语言的艺术》一书。他还开发了HLA(High Level Assembly)语言,让初学者更容易学习汇编程序。

要编译您创建的 .hla 程序,您可以从此处下载 .exe ,以安装所有必需的设置。您可以通过将目录更改为 /hla 并在命令行中键入来简单地编译您的程序:hla PROGRAM.hla.

我的问题:一开始编译器工作正常,但现在当我想编译一个程序时,我会得到一个错误。该程序如下所示:

program helloWorld;
#include ("stdlib.hhf");

begin helloWorld;

    stdout.put("Hello, World of Assembly Language", nl);

end helloWorld;

现在,当我在hla helloWorld.hla命令行中输入时,会弹出一个带有转换错误的窗口。

此错误也出现在命令行中:

POLINK: fatal error: File not found: 'Level.OBJ'.
Error returned by POLINK = 1

编译器只创建一个 .link 文件,如下所示:

-heap:0x1000000,0x1000000
-stack:0x1000000,0x1000000
-base:0x4000000
-entry:HLAMain
-section:.text,ER
-section:.data,RW
-section:.bss,RW
kernel32.lib
user32.lib
gdi32.lib

我用这个命令试了一下:hla -v helloWorld.hla我得到以下输出:

    HLA (High Level Assembler)
    Use '-license' to see licensing information.
    Version 2.16 build 4413 (prototype)
    Win32 COFF output
    OBJ output using HLA Back Engine
    -test active

    HLA Lib Path:     C:\hla\hlalib\hlalib.lib
    HLA include path: C:\hla\include
    HLA temp path:
    Linker Lib Path:  ;D:\hla\hlalib;D:\hla\hlalib;C:\hla\hlalib;C:\hla\hlalib;D:\hla\hlalib;C:\hla\hlalib;C:\hla\hlalib

    Compiling 'helloWorld.hla' to 'helloWorld.obj'
    using command line:
    [hlaparse -WIN32 -level=high  -v -test "helloWorld.hla"]

    ----------------------
    HLA (High Level Assembler) Parser
    use '-license' to view license information
    Version 2.16 build 4413 (prototype)
    -test active
    Output Path: ""
    hlainc Path: "C:\hla\include"
    hlaauxinc Path: ""
    Compiler generating code for Windows OS
    Back-end assembler: HLABE
    Language Level: high

    Assembling "helloWorld.hla" to "helloWorld.obj"
    HLAPARSE assembly complete, 40963 lines,   0.058 seconds,  705043 lines/second
    ------------
    HLA Back Engine Object code formatter
----------------------
Linking via [polink @"helloWorld.link._.link"]
POLINK: fatal error: File not found: 'Level.OBJ'.
Error returned by POLINK = 1

重新启动我的系统,重新安装 .exe 并尝试了不同的程序,但我太不熟练了,无法解决这个问题。

任何帮助将不胜感激。

troubleshooting assembly
  • 1 个回答
  • 110 Views
Martin Hope
Lavair
Asked: 2019-06-09 15:12:04 +0800 CST

symantec Stuxnet 分析中的“部分名称”是什么意思?

  • 5

下面的 blockquote 位于第12 页

Stuxnet 的释放器组件是一个包装器程序,它包含所有上述组件,这些组件存储在其内部的一个名为 “存根”的部分中。这个存根部分是 Stuxnet 工作不可或缺的一部分。当执行威胁时,包装器从存根部分提取 .dll 文件,将其作为模块映射到内存中,并调用其中一个导出。

我对 IT 安全还很陌生(而且我知道,Stuxnet 可能不是最好的起点)。
对不起,如果这是一个轻率的愚蠢问题。

注意:我没有设置自己的标签所需的 300 信誉,这就是标签列表没有任何意义的原因。如果有人可以编辑标签,我会建议stuxnet、dropper或dropper -component和advanced-persistent-threat

terminology assembly
  • 1 个回答
  • 883 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve