assembly - 我正在尝试学习汇编语言,我有一些疑问,我在下面提到

标签 assembly architecture processor

我读到汇编语言依赖于处理器,并且每个处理器都有特殊的指令集。 我使用intel i5 x86_64架构处理器。 当我编写代码时,我没有使用任何不同的指令集。 我使用 NASM 汇编器。它组装我的代码并转换为二进制。 那么处理器出了什么问题呢? 即使我的 friend 具有不同的架构也运行相同的代码(不是编译的而是源代码)并获得相同的输出...... 那么汇编语言处理器依赖在哪里??

代码是......这只是一个例子,每段代码都运行在 x86_64 和 8088 微处理器架构上

[ORG 0x7c00]

    xor ax, ax  ;make it zero
    mov ds, ax

    mov si, msg
    call bios_print

hang:

   jmp hang

msg   db 'Welcome to Macintosh', 13, 10, 0


bios_print:

   lodsb
   or al, al  ;zero=end of str
   jz done    ;get out
   mov ah, 0x0E
   int 0x10
   jmp bios_print

done:
   ret

   times 510-($-$$) db 0
   db 0x55
   db 0xAA

最佳答案

去汽车经销商那里试驾一辆全新的丰田。然后去其他二手车场找到同型号但不同年份的旧丰田。它们每年都不相同,但多年来它们通常与其他车型非常相似,例如某些元素、门锁、车窗控制等的位置和外观和感觉。然后去福特经销商处,对某些车型进行重复福特的。福特与丰田立刻就有了显着的不同,尽管它们都是四轮汽车和具有相同功能的发动机。在福特汽车中,它们通常与它们的 sibling 以及前年和后年模型的具体细节相似,连续多年共享零件。

这里没有什么不同,x86 处理器中的一些项目您可以看到与第一个 8088/86 的相似之处。但将其与 Power PC、ARM 或 MiPS 进行比较,您会发现,尽管它们都是可以运行现代操作系统的处理器,但它们的具体细节以及外观和感觉在不同品牌之间比在品牌内部差异更大。

关于assembly - 我正在尝试学习汇编语言,我有一些疑问,我在下面提到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421996/

相关文章:

c++ - 预处理器、汇编器和链接器是编译器的一部分吗?

c - MOV指令如何使用物理地址?

design-patterns - 在reactjs中组件组合中使用props的惯用方法是什么

nhibernate - 使用 Fluent NHibernate 使用两个非 FK 列连接到表

c - ARM 处理器如何区分负数和正数?

c++ - `__cpp` 和 gcc 内联 ARM 汇编器

assembly - 是否有支持带偏移量的寄存器间接寻址的 CALL 指令?

c# - ValidationRule 的执行集-C# 类设计 - 更好的方法

ios - Apple 处理器上的独家预留颗粒 (ERG)

windows - Intel 和 AMD 处理器的 PROCESSOR_ARCHITECTURE 的奇怪注册表值