そうそう、私はアセンブリレベルのプログラミングをいじっています...
これが私がこれまでに持っているものです。
global _start
section .text
_start:
mov eax, 4 ; write
mov ebx, 1 ; stdout
mov ecx, msg
mov edx, msg.len
int 0x80 ; system call
mov eax, 1 ; exit
mov ebx, 0 ; exit code
int 0x80 ; system call
section .data
msg: db "Hello world!", 10 ; Defines the string "Hello world!\n"
.len equ $-msg
声明はどのように機能し.len equ $-msg
ますか?これが文字列の長さだと理解しています。また、equ が C のようなものであることも知ってい#define
ます。したがって、この変数はメモリ内に存在せず、アセンブラによって配置されます。(ナズム)
$ 記号は何をするもので、その後に減算が行われるのでしょうか?
私の出力はセグメンテーション違反を引き起こし障害を修正しましたが、まだ $ 概念を理解していません。.len equ $-msg
ます。構文を理解したら、これを自分で修正できることを願っています。
これが不正なプログラムであることが原因であるEDIT Segfault。修理済み