所以我从未做过任何汇编编程(虽然我做了一些阅读/推理结果来自x86的小部分和CS类中的arm程序集)。
我有点好奇人们如何在c /其他(几乎没有)高级语言被认为太慢而今天这些日子里进行严肃的汇编编程。
人们使用High-level assembler吗?
某种文字宏? 评论每一行?
人们是否根据团队约定的惯例进行调用堆栈? 他们倾向于使用文本编辑器还是某种思想?
以及其他任何有趣的东西。
P.S。另外你如何处理字符串(可能只是ascii),结构/联合(compositee数据类型)(即如何简化编写代码来创建和操作它们)?
P.P.S。人们经常从汇编中调用OS提供的c库函数吗?
答案 0 :(得分:8)
答案 1 :(得分:4)
对于您的问题“如何使用汇编程序进行编程?”的最简单和最重要的答案:
如你所愿。这是组装的主要原因。控制。按照你的方式,可以这么说。
编辑:
答案 2 :(得分:3)
我最后一次在汇编时编程,它在我的HP-48计算器上,计算器上有Jazz开发环境。它提供了一个汇编程序,反汇编程序,逐步调试程序,“入口点”浏览器(用于调用HP工程师使用的函数库),文本编辑器,字体库以及数十个小编程实用程序,全部为72kb。
这是非常低级的,如果Jazz环境有宏,我从来没用过它们。语法与例如非常不同英特尔组装,我发现它非常易读,没有任何评论。 (它支持例如A = B
将B
寄存器的内容复制到A
寄存器,以及简单的子寄存器选择器等。)
当然有调用约定,但由于汇编域中提供的大多数函数都是类似名称的RPL函数背后的“guts”,因此调用约定非常容易记忆。 (它更少记住它们,更多的是使用您在高级语言中已经熟悉的内容。)
但是我的节目从未像Jazz工具集那样雄心勃勃 - 我很想知道Jazz本身是在计算器上还是在主机上开发的。
答案 3 :(得分:1)
答案 4 :(得分:1)
我的MS论文代码的核心是汇编。
有效地,我写C直到我找到C不能做的功能。然后,我写了几行汇编 - 在这种情况下,用gcc语法。
我通常会看一下生成的ASM(gcc -S
),以确保我没有完全破坏编译器的期望。
答案 5 :(得分:0)
我相信MASM是免费的,搜索microsoft.com进行下载
答案 6 :(得分:0)
我记得成功地用gnu AS编写了C函数(实现了Bresenham算法,仅将寄存器作为变量)。
答案 7 :(得分:0)
当时的程序要简单得多。他们没想到我们今天把这些数据集当作商品。装配说明更简单,适用于手工编写程序。
我不知道是否有人写过集会的时候。 C64家伙有那个用来编程他们系统的漂亮的BASIC。当人们停止使用打卡时,编程语言几乎就在那里。