小编rkh*_*khb的帖子

没有创建gdb + nasm调试信息

我正在尝试调试我在Ubuntu中编写的一个小.asm文件.然而,我遇到了一个问题,我的符号表没有被加载,正在寻找一些帮助.

我正在编译我的程序如下.

nasm -f elf -g -F dwarf bs.asm
gcc -m32 -g bs.o -o bs
Run Code Online (Sandbox Code Playgroud)

我跑的时候产生可执行的bs

gdb bs 
Run Code Online (Sandbox Code Playgroud)

我收到一条消息说没有调试符号,当我尝试设置一个断点时

b main 
Run Code Online (Sandbox Code Playgroud)

它说功能没有定义,即使它在文件中,我可以使用./bs运行它

我阅读了一些帖子,建议在组装时添加-F矮人,但如果有人有任何见解这没有帮助我会非常感谢你的输入.

debugging assembly gdb nasm

7
推荐指数
2
解决办法
5187
查看次数

在哪里可以找到 x86_64 汇编指令列表?

这里是一个完整的(我认为)NASM 指令列表的链接,我认为它也涵盖了 Intel 处理器的 x64 位指令集。

然而,我希望在某个地方有一个完整的说明列表,仅此而已,而不需要对每个说明进行冗长的解释。

这样的事情存在吗?这对于学习命令(你可以猜出它们的大部分含义,然后用谷歌搜索你猜不到的那些),当你记不住命令时提高你的记忆力,并扫描合适的命令来满足你的要求,这将很有用。

assembly x86-64 instruction-set

6
推荐指数
1
解决办法
8099
查看次数

uml组件图与组件和具有依赖关系的接口之间的区别

有人可以解释图中标记的元素之间的区别吗?我认为这只取决于我们想要连接的接口数量.我对吗?

http://i.imgur.com/ZnW02Ar.png

diagram components modeling

6
推荐指数
1
解决办法
2170
查看次数

如何使用另一个Assembly的内部类

我有一个第三方程序集,我想Internal在我的新C#项目中使用它的类.可能吗?

真的很感激任何一个例子

.net c# oop .net-assembly

6
推荐指数
2
解决办法
1万
查看次数

Solidity:函数参数的大小如何影响 gas 成本?

在此之前有一些上下文:

假设我正在实施一个 dApp,我想减少用户调用相关智能合约的次数。为了做到这一点,所有用户的操作都是在客户端堆叠起来的。最终,用户将不得不将他们的行为提交给智能合约,以更新他们在链上的数据。

智能合约将所有用户操作的队列作为参数,并对其进行迭代,主要进行一些检查和更新。有点像这样:

function verifyUsersActions(Queue actions) public
{
    while(actions.length != 0)
    {
        Action currentAction = actions.pop(); 
            /* tests on currentAction, update datas, etc */
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:“actions”对象的大小如何影响gas成本?在 "actions.length = 2" 和 "actions.length = 3" 之间,gas 的增量是多少?

我仍然对“内存”和“存储”变量感到困惑,不知道函数调用参数属于哪个类别。

queue parameters ethereum solidity

6
推荐指数
1
解决办法
836
查看次数

使用WIN32函数在MASM中输出Hello World

内容

  1. 介绍
  2. 装配和运行

1.简介

这本身不是一个问题(虽然底部有一个)但是一个HelloWorld应用程序供StackOverflow上的人们试验.

当我第一次尝试在MASM中编程时,我试图找到一个使用WIN32 API调用的工作HelloWorld应用程序(因此不链接到C库)但找不到(在MASM语法中).所以现在我已经有了一些经验,我已经为其他人想要学习装配来摆弄.

2.代码

.386 ; 386 Processor Instruction Set

.model flat,stdcall ; Flat memory model and stdcall method

option casemap:none ; Case Sensitive

;Libaries and Include files used in this project

; Windows.inc defines alias (such as NULL and STD_OUTPUT_HANDLE in this code
include \masm32\include\windows.inc 

; Functions that we use (GetStdHandle, WriteConsole, and ExitProcess)
; Listing of all available functions in kernel32.lib
include \masm32\include\kernel32.inc 
; Actuall byte code available of the functions …
Run Code Online (Sandbox Code Playgroud)

assembly winapi masm masm32

5
推荐指数
1
解决办法
2万
查看次数

使用在NASM中调用malloc返回的内存

我正在使用nasm编译器将我的代码编译成目标文件,然后调用gcc的链接器来链接该目标文件以创建最终的可执行文件.这意味着我可以访问C的运行时库.

我需要进行动态内存分配,所以我按如下方式调用malloc

push 20 ;push amount of bytes malloc should allocate    
call _malloc ;call malloc
add esp,4 ;undo push
Run Code Online (Sandbox Code Playgroud)

分配的内存地址在eax寄存器中返回,但是如何使用地址用值初始化该位置?

我的程序的目的是让用户指定他们想要输入多少个数字,然后为每个数字动态创建空间.理想情况下,我希望创建一个匹配用户指定的确切大小的数组,并能够遍历此数组.

malloc assembly nasm

5
推荐指数
1
解决办法
8414
查看次数

我应该依赖动态加载的程序集吗?

我有以下情况.

  • 程序集D包含类Data.
  • 程序集F1包含创建,填充和返回的类Data.
  • 程序集F2包含类,它接受Data作为输入.

诀窍是,所有这些程序集都是插件并动态加载.当然,F1和F2都引用D,但在运行时,所有三个都由主机应用程序加载.

现在如果有人用更新的版本替换D二进制文件会有什么变化呢?

我写了一个测试应用程序,它做了类似的事情,结果如下:

  • 在类Data中添加新字段不会导致异常;
  • 用另一个字段替换现有字段会导致TargetInvocationException包含信息,请求字段不存在

如果.NET跟踪接口调用,我很好.那是因为访问库中未更改的部分只会起作用,如果该部分发生变化,我只会告诉我一个例外.因此它将工作(在接口级别上)或不工作 - 没有未定义的行为.

我的问题:

  • 如何在运行时解析类型 - 特别是在不匹配的程序集版本的情况下?.NET是否跟踪字段/属性/参数/返回值类型和名称?
  • 有没有办法在某些特定版本中强制引用程序集?

.net c# dynamic .net-assembly

5
推荐指数
1
解决办法
120
查看次数

我的.exe程序不是我的预期

我的masm源文件如下:

qq.asm

assume cs:codesegment
codesegment segment
mov ax, 0ffffh
mov ds, ax
mov al, 00ffh
mov bx, 0006h
mov [bx], al
mov al, [0006]
mov ah, 0
mov dx, 0
mov cx, 3
s: add dx, ax
loop s
mov ax, 4c00h
int 21h
codesegment ends
end
Run Code Online (Sandbox Code Playgroud)

我使用masm程序生成一个名为qq.exe的.exe文件.当我使用debug qq.exe -u时,教师如下图所示: 图片

我混淆了我的qq.asm中的"mov al,[0006]"指导员在qq.exe中转向"mov AL,06".任何帮助将是欣赏.

64-bit assembly masm dosbox windows-7

5
推荐指数
1
解决办法
60
查看次数

汇编语言(x86):如何创建循环来计算Fibonacci序列

我正在使用Visual Studio 2013 Ultimate在MASM中编写汇编语言(x86).我试图使用数组来计算使用数组的n个元素的Fibonacci序列.换句话说,我试图去一个数组元素,获取它之前的两个元素,添加它们,并将结果存储在另一个数组中.

我无法设置索引寄存器以使其工作.

我的程序设置如下:

TITLE fibonacci.asm

INCLUDE Irvine32.inc

.data
    fibInitial  BYTE 0, 1, 2, 3, 4, 5, 6
    fibComputed BYTE 5 DUP(0)

.code
main PROC

    MOVZX si, fibInitial
    MOVZX di, fibComputed
    MOV   cl, LENGTHOF fibInitial

L1:
    MOV   ax, [si - 1]
    MOV   dx, [si - 2]
    MOV   bp, ax + dx
    MOV   dl, TYPE fibInitial
    MOVZX si, dl
    MOV   [edi], bp
    MOV   dh, TYPE fibComputed
    MOVZX di, dl
    loop L1

exit
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

我无法编译这个,因为该行的错误消息"错误A2031:必须是索引或基址寄存器" MOV ebp, …

x86 assembly masm irvine32

5
推荐指数
1
解决办法
2万
查看次数