一个64位汇编的例子。
;cmdline.asm extern printf section .data msg db "The command and arguments:",10,0 fmt db "%s",10,0 section .bss section .text global main main: push rbp mov rbp,rsp mov r12,rdi ;参数数量 mov r13,rsi ;参数数组的地址 ; 打印标题 mov rdi,msg call printf mov r14,0 ; 打印命令和参数 .ploop: mov rdi,fmt mov rsi,qword [r13+r14*8] call printf inc r14 cmp r14,12 ; 参数数量达到了吗? jl .ploop ; leave ; 权3以后无效,权0差配对 ret
这个例子说明了64位汇编的编法,那些用函数的注意64位函数的参数第5个参数,第6个参数,使用调试软件调试一下。
不解释,64位汇编是系统用的汇编。合理使用汇编语言编译器,没事自已改改编译器,拥有自已的那套规则就正常了。
那跨平台的程序是跨了又跨,那字符终端字符平台一开始一定要的。
一个自已的系统也许老套只要三个文件或者一个区块。然后加上应用的自已的编译器,调试器就可以了。
很多可以参考windows 32[中文版]这套系统。你会发现以前的不是很难,现在看起来很容易。但是要时间。
64位的系统,一样32位寻址和计算,说实话,一些程序32程序已经可以了,信不信128位也只是带个地址,想了又想,实在是没有必要的事情。
64位和128位的计算很多只是讲讲速度。是电脑的数据流派。硬计算和按位读取,存入再计算要快得多。
一个游戏也许只有4Kb字节,16Kb字节,你看多年以前的任天堂FC红白机的卡带。内容很紧,储存并不多,够用就行。
很多事情就是界面,图形,视频,那些计算机中做出来的图片什么的,也是功夫茶。占内存的就是这些东西,大多没有其它。