使用 mac os x 在 64 位处理器上运行 32 位程序集

2023-12-04

我在运行 os x 10.9.5 的 64 位 Mac 上运行 32 位程序集时遇到问题。我还安装了 NASM 2.11.08。我目前正在阅读 Jeff Duntemann 的《一步一步汇编语言》。在书中,他详细说明了 Linux 操作系统上的 32 位汇编指令。我怎样才能在我的 64 位 mac os x 计算机上运行这个程序。

; eatsyscall.asm

SECTION .data           ; Section containing initialised data
EatMsg: db "Eat at Joes!",10
EatLen: equ $-EatMsg    

SECTION .bss            ; Section containing uninitialized data 

SECTION .text           ; Section containing code

global  _start          ; Linker needs this to find the entry point!

_start:
    nop         ; This no-op keeps gdb happy...
    mov eax,4       ; Specify sys_write call
    mov ebx,1       ; Specify File Descriptor 1: Standard Output
    mov ecx,EatMsg      ; Pass offset of the message
    mov edx,EatLen      ; Pass the length of the message
    int 80H         ; Make kernel call

    MOV eax,1       ; Code for Exit Syscall
    mov ebx,0       ; Return a code of zero 
    int 80H         ; Make kernel call

我试过用它来组装它

nasm -f elf -g -F stabs eatsyscall.asm

然后我尝试将其链接到

ld -o eatsyscall eatsyscall.o

但我收到这个错误

ld: warning: -arch not specified
ld: warning: -macosx_version_min not specified, assuming 10.6
ld: warning: ignoring file eatsyscall.o, file was built for unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ) which is not the architecture being linked (x86_64): eatsyscall.o
Undefined symbols for architecture x86_64:
  "start", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64

这应该运行,对吧?我认为Intel的64位处理器能够运行32位程序。或者有没有办法在64位mac上运行为32位linux系统编写的汇编程序?

我是否需要安装一组 32 位库才能链接此文件?我应该使用 NASM 之外的其他东西,例如 GCC 吗?或者是程序本身写得不正确。谢谢您的帮助!


Linux 的可执行文件无法在 Mac 上运行。如果您想运行 Jeff Duntemann 的东西,请在 Mac 上的虚拟机上安装 Linux。代码可以翻译为-f macho64相当(?)容易,但是 Nasm-2.11.08 中有一个严重的错误-f macho64 :(

有一个候选版本 -http://www.nasm.us/pub/nasm/releasebuilds/2.11.09rc1/macosx/- “可能”修复它。需要有人测试一下。对于初学者来说也许不是一份好工作。您应该能够在 Mac 上使用 gcc 进行编程,但不能使用“逐步”。 Nasm 将在您的 Mac 上运行...但现在不行...如果可以的话,暂时安装 Linux。

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

使用 mac os x 在 64 位处理器上运行 32 位程序集 的相关文章

  • 是否可以调用驻留在 exe 中的非导出函数?

    我想调用驻留在第 3 方 exe 中的函数并获取其结果 好像有should是一种方法 只要我知道函数地址 调用约定等 但我不知道如何 有谁知道我会怎么做 我意识到任何解决方案都是非标准的黑客 但有must成为一种方式 我的非恶意用例 我正在
  • 如何在 mac os 10.6 上安装brew或homebrew

    我已经尝试过多次了 谁能告诉我具体的详细步骤吗 我的Mac操作系统是10 6 8 它抱怨一些丢失的包裹 使用它在 Mac OSX 10 6 8 上安装 ruby e curl fsSL https raw githubusercontent
  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • NSTokenField:标记的不同颜色

    我在我的 xib 中创建了一个 NSTokenField 我想在 tokenField 中显示不同颜色的令牌 含义 一些标记将是蓝色的 其余的将是红色的 根据其内容 那可能吗 以下代码对我不起作用 我希望有人能帮助我 id tokenFie
  • OSX 上的 ATI OpenCL SDK

    我拥有 ATI GK 的新 MPB 我很好奇 我是否可以下载 OSX 的 sdk 特别是示例集合和分析器 或者我必须本地运行 Windows Linux 因为我只找到了 Windows 和 Linux 的版本 提前致谢 只要您有 Mac O
  • 如何从 Mac OS X 导出证书以获得一对 .cert 和 .key 文件?

    我在 Mac 10 10 1 上创建了证书 并且在钥匙串访问证书中拥有私钥 在 Windows 上我必须使用这个 并且我需要 cert 和 key 文件 如何导出该证书以获得这两个文件 我可以导出为 pb12 或 cert 但不能导出为 c
  • 如何在 Unix 控制台或 Mac 终端中编译和运行 C/C++ 代码?

    如何在 Unix 控制台或 Mac 终端中编译 运行 C 或 C 代码 如果是一个简单的单源程序 make foo 源文件在哪里foo c foo cpp等等 你甚至不需要 makefile Make 有足够的内置规则将源文件构建为同名的可
  • 如何在 MOS 6502 的 asm 中创建延迟

    我是 ASM 新手 我正在尝试研究如何为以下代码创建延迟 org 1000 loop inc d021 jmp loop 我想评论已经足够清楚了 每帧更改颜色的代码示例 1 50 秒 sei enable interrupts loop1
  • 如何在Mac上启动Syslogd服务器以接受远程日志记录消息?

    有人知道如何在 Mac 上启动 Syslogd 服务器来接受远程日志记录消息吗 我启动了 Syslogd 但似乎它不接受远程消息 如果我执行 netstat an 看起来 udp 端口 514 正在侦听 但是 如果我使用 nmap 从笔记本
  • 由于符号链接错误,无法在 Mac OSX 10.8.1 中安装 ruby​​-1.9.2

    首先 我尝试了常见的rvm安装 rvm安装1 9 2 但是 显示了以下错误 The provided compiler usr bin gcc is LLVM based it is not yet fully supported by r
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • 内存映射图形输出

    我正在探索使用内存映射图形绘制像素和线条 我在 Windows 的 Textpad 中使用 TASM 当我单击 运行 时 整个屏幕变成蓝色 就是这样 没有绘制像素 model small stack data saveMode db xVa
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 在 Mac 操作系统上使用 ffmpeg 录制视频

    我想在 mac OS 上使用 ffmpeg 以任何格式录制实时网络摄像头视频 我尝试了很多 但无法找到用于重新编码视频的命令 所以请任何人都可以告诉我 ffmpeg 命令用于使用 Mac 操作系统的网络摄像头捕获视频 提前致谢 对于 Mac
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl

随机推荐