Assembly 默认情况下是否安装了汇编程序?

Assembly 默认情况下是否安装了汇编程序?,assembly,arm,raspberry-pi,Assembly,Arm,Raspberry Pi,你好,很棒的社区 我刚开始学习汇编语言。我将从Raspberry Pi B+上的ARM汇编开始,稍后将学习运行Windows(8.1)的64位英特尔处理器的汇编 但是我想知道ARM处理器的汇编程序是否默认安装在Raspbian OS发行版中。我还想知道Windows8.1的这一点 如果没有安装,我在哪里可以找到Rapsberry Pi B+和带有64位Intel处理器的Windows 8.1计算机的汇编程序 奖金问题: 我找到了一份解释ARM v3体系结构的ARM组装基础知识的PDF。 现在,R

你好,很棒的社区

我刚开始学习汇编语言。我将从Raspberry Pi B+上的ARM汇编开始,稍后将学习运行Windows(8.1)的64位英特尔处理器的汇编

但是我想知道ARM处理器的汇编程序是否默认安装在Raspbian OS发行版中。我还想知道Windows8.1的这一点

如果没有安装,我在哪里可以找到Rapsberry Pi B+和带有64位Intel处理器的Windows 8.1计算机的汇编程序

奖金问题: 我找到了一份解释ARM v3体系结构的ARM组装基础知识的PDF。
现在,Raspberry Pi B+使用哪种ARM版本?如果Raspberry Pi使用另一个版本,这是否重要?

Raspberry Pi B+使用ARMv6。GCC安装在raspberry pi上,可用于组装ARM组件,也可使用GNU汇编程序
作为
,使用GCC时,默认起始标签将为
main
,但大多数其他汇编程序将使用
\u start
。使用GCC会更容易,因为它可以使用C函数,如
printf

当使用gcc编译时,它将生成一个可执行文件,但使用
as
时,它将输出需要链接的目标代码

下面是一个简单的hello world程序

.text
.global _start
_start:
    mov r0, #1        @// write to stdout
    ldr r1, =message  @// memory address of message
    ldr r2, =len      @// length of message
    mov r7, #4        @// Linux system call SYS_WRITE
    swi 0             @// call software interupt

    mov r0, #0
    mov r7, #1        @// exit
    swi 0

.data
message:
    .ascii "hello world\n"
len = .-message
使用gcc编译

gcc -nostdlib hello.s -o hello


您的RaspberryPi操作系统将附带汇编程序,Windows不会。问到哪里去寻找非现场资源是个话题。你知道我刚拥有一个Windows 8.1机器,并且安装了VisualC++的ONT,不确定它是否是我安装的其他东西的副作用(没有把它作为一个开发机器设置)。实际上,我去了“卸载软件”对话框,在那里看到了visual C,但没有弄乱它。一般来说,不,linux、mac和windows都不应该有本机编译器或汇编程序。更不用说为任何操作系统附带的非本机平台找到交叉编译器了。现在说,许多linux发行版在安装时默认会有一个本机工具链,而不是交叉编译器(包括这些通用类别中的汇编器)。是的,armv3很有趣,有很多与armv4和更高版本匹配,但armv4是您应该开始的地方,infocenter.arm.com提供了您需要的文档,请参阅架构参考手册。我想raspberry pi b使用的是armv6,如果我没记错的话,新的pi2使用的是armv7,但这些都记录在许多网页上——rpi网页本身或维基百科等。在大多数情况下,你可以在任何地方使用armv4(不是说cortex-m)或者与您拥有的架构相同或更低,但armv3及其以下版本没有过渡到armv4binutils是您所追求的,您可以在许多地方获得跨工具链,仅限于binutils,而不是c编译器或其他高级语言,这使得选择更大。开发工具包arm、yagarto、launchpad one、mbed的web东西可能会工作,或者只是从源代码构建,对于binutils而不是编译器来说非常简单。以及所有为之付出的代价。谷歌是你的朋友,树莓pi论坛也是。非常感谢!这很有帮助!
as hello.s -o hello.o
ld hello.o -o hello