class Crystal::Macros::Asm
Overview
An inline assembly expression.
Every assembly node
is equivalent to:
asm(
{{ node.text }} :
{{ node.outputs.splat }} :
{{ node.inputs.splat }} :
{{ node.clobbers.splat }} :
{% if node.volatile? %} "volatile", {% end %}
{% if node.alignstack? %} "alignstack", {% end %}
{% if node.intel? %} "intel", {% end %}
{% if node.can_throw? %} "unwind", {% end %}
)
Defined in:
compiler/crystal/macros.crInstance Method Summary
-
#alignstack? : BoolLiteral
Returns whether the assembly expression requires stack alignment code.
-
#can_throw? : BoolLiteral
Returns whether the assembly expression might unwind the stack.
-
#clobbers : ArrayLiteral(StringLiteral)
Returns an array of clobbered register names for this assembly expression.
-
#inputs : ArrayLiteral(AsmOperand)
Returns an array of input operands for this assembly expression.
-
#intel? : BoolLiteral
Returns
true
if the template string uses the Intel syntax,false
if it uses the AT&T syntax. -
#outputs : ArrayLiteral(AsmOperand)
Returns an array of output operands for this assembly expression.
-
#text : StringLiteral
Returns the template string for this assembly expression.
- #volatile? : BoolLiteral
Instance methods inherited from class Crystal::Macros::ASTNode
!=(other : ASTNode) : BoolLiteral
!=,
==(other : ASTNode) : BoolLiteral
==,
class_name : StringLiteral
class_name,
column_number : StringLiteral | NilLiteral
column_number,
doc : StringLiteral
doc,
doc_comment : MacroId
doc_comment,
end_column_number : StringLiteral | NilLiteral
end_column_number,
end_line_number : StringLiteral | NilLiteral
end_line_number,
filename : StringLiteral | NilLiteral
filename,
id : MacroId
id,
is_a?(type : TypeNode) : BoolLiteral
is_a?,
line_number : StringLiteral | NilLiteral
line_number,
nil? : BoolLiteral
nil?,
raise(message) : NoReturn
raise,
stringify : StringLiteral
stringify,
symbolize : SymbolLiteral
symbolize,
warning(message : StringLiteral) : NilLiteral
warning
Instance Method Detail
Returns whether the assembly expression requires stack alignment code.
Returns an array of clobbered register names for this assembly expression.
Returns an array of input operands for this assembly expression.
Returns true
if the template string uses the Intel syntax, false
if it
uses the AT&T syntax.
Returns an array of output operands for this assembly expression.
Returns whether the assembly expression contains side effects that are
not listed in #outputs
, #inputs
, and #clobbers
.