README content update && fix illegal alignment size input

This commit is contained in:
LuChiChick 2025-08-13 10:23:21 +08:00
parent f0e850bf7f
commit 6c1e790cd1
2 changed files with 7 additions and 6 deletions

View File

@ -60,14 +60,14 @@ SrcToA2L.exe .\Test\typedef.h .\Test\source_code.c
- `-r` 指定为合并写入的参考A2L文件
- `-m` 指定为用于查找地址的map文件
- `-a` 指定字节对齐长度(仅非0数值且为2的正整次幂不指定或参数错误时默认为4字节对齐
- `-a` 指定字节对齐长度(仅为1或2的正整次幂不指定或参数错误时默认为4字节对齐
其它传入的参数视为用于解析的源文件、头文件A2L与map文件仅传入的最后一个有效
**`SrcToA2L` 不会破坏任何用于输入的文件,仅以只读模式打开**
## 注意事项
本工具为了省略多余操作,除需特定处理的 `calibrations``measurements` 标记段外结构体、宏定义、地址匹配等的解析识别是通过全文扫描提取关键字进行的由于代码风格千奇百怪解析处理过程有可能会遇到预料之外的BUG尤其是在生产环境下为避免发生此类情况发生最好事先将用于处理的代码进行格式化或特别留意 `define``typedef` 等关键字周边的情况;
本工具为了省略多余操作,除需特定处理的 `calibrations``measurements` 标记段外结构体、宏定义、地址匹配等的解析识别是通过全文扫描提取关键字进行的由于代码风格千奇百怪解析处理过程有可能会遇到预料之外的BUG尤其是在生产环境下为避免发生此类情况发生**最好事先将用于处理的代码进行格式化**,或特别留意 `define``typedef` 等关键字周边的情况;
如有意外情况发生,可以参考终端日志查看问题发生位置以修改输入文件,或对本工具源码进行修改,构建适应特定环境的版本;
@ -111,11 +111,10 @@ OSWindows11 Professional 24H2 (26100.4652)
Tool Chain[mingw-w64\i686-14.2.0-release-win32-dwarf-ucrt-rt_v12-rev2](https://github.com/niXman/mingw-builds-binaries/releases/tag/14.2.0-rt_v12-rev2)
构建关系由 `Makefile` 组织,使用 `C17``C++17` 标准,但由于并未使用高级特性,构建标准可自行调整(按理说 `C98``C++98` 应该也行);
完善构建环境后,在工作目录下使用 `make``mingw32-make` 即可进行构建;
本工具仅使用标准库,完全具备跨平台支持,但在其他平台、环境下需要对 `Makefile` 进行少量修改;
本工具仅使用标准库,完全具备跨平台支持,但在其他平台、环境下需要对 `Makefile` 进行少量修改;
目前已知使用64位或某些分发版本的编译器时会出现 `size_t` 类型不统一导致的编译警告,但不影响主要功能;
## 主要目录及说明
Git-Storage 本仓库目录
├─.vscode 用于vscode的配置文件

View File

@ -36,7 +36,9 @@ void solve_args(int argc, char *argv[])
size_t value = 0;
sscanf(argv[count + 1], "%u", &value);
if ((value % 2 == 0 && value != 0) || value == 1)
// 利用2进制中2的整次幂仅有1位为1判定是否为合法字节对齐
if ((value & (value - 1)) == 0 && value != 0)
{
log_printf(LOG_SUCCESS, "Alignment size set to %u.", value);
addr_alignment_size = value;